Il s'agit d'un mémo lorsque le jeton Web d'AWS Cognito a été vérifié.
[Vérification du jeton Web JSON \ -Amazon Cognito](https://docs.aws.amazon.com/ja_jp/cognito/latest/developerguide/amazon-cognito-user-pools-using-tokens-verifying-a-jwt. html)
Cognito vous permet de télécharger un ensemble JWK pour vérification pour chaque groupe d'utilisateurs
https://cognito-idp.{region}.amazonaws.com/{userPoolId}/.well-known/jwks.json
jwt jwt/ruby-jwt: A ruby implementation of the RFC 7519 OAuth JSON Web Token (JWT) standard.
Utilisé pour décoder les jetons JWT réguliers
json-jwt
Utilisé pour créer une clé publique à partir d'une clé Web JSON publique (JWK)
#Télécharger l'ensemble JWK
uri = "https://cognito-idp.ap-northeast-1.amazonaws.com/example/.well-known/jwks.json"
response = Net::HTTP.get_response(URI.parse(uri))
jwks = JSON.parse(response.body)
#Décoder JWT sans vérification
token = JWT.decode(jwt, nil, false)
#Obtenez le match enfant de l'ensemble JWK
jwk = jwks["keys"].find { |obj| obj["kid"] == token[1]["kid"] }
#Créer une clé publique
public_key = JSON::JWK.new(jwk).to_key
#Une exception est lorsque la vérification du décodage est invalide à l'aide d'une clé publique.
JSON::JWT.decode(jwt, public_key)
Si vous le trouvez utile, veuillez LGTM
Recommended Posts