Wenn Sie sich in einer Rails-App bei Apple anmelden möchten, müssen Sie id_token in Rails überprüfen, da die Anmeldung bei Apple schließlich OpenID Connect ist. Wenn es sich um Ruby handelt, kann die Überprüfung mithilfe dieses Edelsteins https://github.com/nov/apple_id problemlos durchgeführt werden.
id_token = AppleID::IdToken.decode(id_token)
id_token.verify!(code: code)
Sie können id_token wie folgt überprüfen. Bei der Methode verify! Wird jedoch der von Apple von HTTPS bereitgestellte öffentliche Schlüssel (JWK) abgerufen und mit diesem JWK die Signatur überprüft. tun. Standardmäßig kommuniziert es bei jeder Überprüfung über HTTPS mit Apple. Da dieser öffentliche Schlüssel jedoch selten aktualisiert wird, kann er zwischengespeichert werden, und es ist wünschenswert, ihn auch als Serverimplementierung zwischenzuspeichern.
1.0.0 von gem's apple_id wurde kürzlich veröffentlicht und mit diesem Versions-Upgrade kann JWK überall zwischengespeichert werden. In diesem Artikel werde ich Ihnen zeigen, wie Sie es zwischenspeichern.
Die Methode zum Zwischenspeichern ist sehr einfach. Legen Sie einfach die Klasse fest, die die Abrufmethode implementiert, die nur ein Argument in AppleID :: JWKS.cache akzeptiert. Sie können JWK erhalten, indem Sie Yield in der Fetch-Methode aufrufen. Wenn Sie es beispielsweise in einem Prozess zwischenspeichern möchten, schreiben Sie den folgenden Code.
class ProcessCache
def initialize
@cache = {}
end
def fetch(cache_key)
@cache[cache_key] ||= yield
end
end
AppleID::JWKS.cache = ProcessCache.new
AppleID :: JWKS.cache ist als Klassenvariable definiert. Als Implementierung der Cache-Klasse können Sie sie einer Instanzvariablen zuweisen und sie wird dabei zwischengespeichert. Selbst wenn Sie es in einer Datei, einem Cache-Server, einer Datenbank usw. anstelle eines Prozesses speichern möchten, können Sie es ersetzen, indem Sie die Abrufmethode auf dieselbe Weise implementieren, was praktisch ist. Die Cache-Klasse sollte unter app oder lib implementiert werden, config / initializers / apple_id.rb usw. vorbereiten und dort AppleID :: JWKS.cache zuweisen.
Recommended Posts