4

現在、アプリに対してユーザーを認証するために Google サインを使用していますが、更新後に id_token に問題が発生しています。以下の変数を設定しています。1 つは iOS クライアント用で、もう 1 つはサーバー用です。これはAWSの例に従っています。AWS を使用してサーバーにアクセスしているため、クライアント ID と Web アプリケーション ID が必要です。

static let GOOGLE_CLIENT_ID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxx7dde.apps.googleusercontent.com"

// Backend web application client ID
static let GOOGLE_WEB_APPLICATION_ID = "xxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxx65ap.apps.googleusercontent.com"

アプリケーションに初めてログインすると、期待どおりに動作します。次の ID トークンが返されます。

{
  "iss": "https://accounts.google.com",
  "at_h ash": "xxxxxxxxxxxxxxxxxxxxxx",
  "aud": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxx65ap.apps.googleusercontent.com",
  "sub": "xxxxxxxxxxxxxxxxxxxxxx",
  "email_verified": true,
  "azp": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxx7dde.apps.googleusercontent.com",
  "email": "2222MyNewEmailIsHere@gmail.com",
  "iat": 1475747692,
  "exp": 1475751292
}

「aud」は GOOGLE_WEB_APPLICATION_ID と一致し、「azp」は GOOGLE_CLIENT_ID と一致することがわかります。

ただし、次のように refreshTokensWithHandler を実行すると:

GIDSignIn.sharedInstance().currentUser.authentication.refreshTokensWithHandler { (GIDAuthentication, error) in

                self.googleAuth = GIDAuthentication;
                self.completeGoogleLogin()
}

応答に問題があります。ID トークンは正しく更新されているため、新しい ID トークンが作成されています。ただし、「aud」はクライアント ID で上書きされているようです。これは、トークンの有効期限が切れているかどうかに関係なく発生します。

{
  "iss": "https://accounts.google.com",
  "at_h ash": "xxxxxxxxxxxxxxxxxxxxxx",
  "aud": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxx7dde.apps.googleusercontent.com"",
  "sub": "xxxxxxxxxxxxxxxxxxxxxx",
  "email_verified": true,
  "azp": "xxxxxxxxxxxxxxxxxxxxxxxxxxxx-xxxxxxxxxxxxxxx7dde.apps.googleusercontent.com",
  "email": "2222MyNewEmailIsHere@gmail.com",
  "iat": 1475747692,
  "exp": 1475751292
}

ご覧のとおり、2 番目の応答の「aud」と「azp」は同じです。次に、サーバーにリクエストを送信すると、トークンを検証できないと不平を言っています。

他の誰かがこれを経験したかどうか疑問に思っていますか?おそらくGIDSignInの問題のようです。

4

0 に答える 0