問題タブ [identitymodel]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
126 参照

c# - 更新トークンが機能しなくなったときにログインを強制する

Identity Server 4 で OpenID Connect を使用している ASP.net コア 3.1 MVC アプリケーションがあります。IdentityModel を使用して、アプリケーションのアクセス トークンを自動的に更新しています。構成は次のようになります。

その ID サーバーを使用して保護されているダウンストリーム API からデータをプルするコントローラーがあります。私の MVC クライアントは、更新トークンを取得するためにスコープ api1 と offline_access を要求します。これらのトークンはSaveTokens = true、サービスに設定されているため、Cookie に保存されます。

すべてが正常に機能しています。ログインすると、アクセス トークンとリフレッシュ トークンを取得します。アクセス トークンを約 20 分間保持し、有効期限が切れると、更新トークンを使用してトークン エンドポイントを呼び出し、新しいアクセス トークンと更新トークンを取得します。

対処方法がわからないシナリオの 1 つは、リフレッシュ トークンの有効期間が過ぎた場合です。リフレッシュ トークンの有効期間を 8 時間に設定しても、MVC セッションがまだアクティブな場合、新しいリフレッシュ トークンを取得しようとして失敗します。

この更新トークンの取得に失敗したときにそれを検出する、処理できる OpenID 接続ミドルウェアのイベントがあり、それを使用して何らかの方法でログイン (または少なくとも ID サーバー /authorize エンドポイントへの往復) を強制することはできますか?

0 投票する
1 に答える
516 参照

asp.net-core - IdentityModel を使用した JWT トークンによる Asp.Net Core API OpenId-Connect 認証

Angular SPA フロントエンドのバックエンドとして ASP.NET Core API を使用しています。ID プロバイダーとしてCognitoを使用しており、OpenId-Connect 認証を作成したいと考えています。authorization code flowこれは、すべての秘密の資格情報がバックエンドに保存されることを意味します。

認証フローは次のようになります (標準の OpenID Connect フロー)。

  1. FE アプリケーションはエンドポイントを呼び出し、ホストされた UI/authorizeにリダイレクトされます。Cognito
  2. クレデンシャルを入力すると、FE は認証コードを受け取ります。
  3. FE は認証コードを使用して BE を呼び出します。
  4. BE は/tokenエンドポイントを呼び出し、 および を受信accessTokenrefreshTokenます。
  5. BEaccessTokenは FE に戻り、Cookie として設定refreshTokenしますhttpOnly(これについては不明ですが、Redis キャッシュに保存する場合があります)。

次に、リクエストごとに FE がBearer AccessToken認証に追加されます。AccessTokenの有効期限が近づくと、 を使用して更新されますrefreshToken

私はこの例を試していましたが、ここではアプリケーションが認証に Asp.Net Core Cookie を使用しaccessTokenrefreshToken. accessToken有効期限が切れた後でも認証されました。また、ASP.NET Cookie の仕組みに関するドキュメントはあまりありません。

そのため、カスタム BE エンドポイントを使用してIdentityModel ヘルパー メソッドを使用することを考えていますが、このような認証を処理することが適切な方法であるかどうかはわかりません。

  • /Login- 取得AccessTokenしてRefreshToken
  • /Refresh-AccessTokenを使用して更新しRefreshTokenます。accessToken有効期限が近づくと、FE は手動で呼び出します。

IdentityModelでは、カスタム実装を作成せずにこのシナリオを適切に処理する「推奨される」方法はありますか?

また、私が知る限り、BE に送信される各リクエストに追加される Cookie に保存することは非常に一般的ですがrefreshToken、各リクエストに既に追加しhttpOnlyた場合は、その意味がわかりません。accessTokenrefreshToken

refreshTokenパフォーマンスとセキュリティ上の理由から、BE 内に格納する方がよいのではないでしょうか?

認証はすべてのアプリケーションの一部であるため、フレームワーク機能も組み込まれている必要があると思いますauthorization code flow

0 投票する
1 に答える
40 参照

uwp - IdentityServer からログアウトしても WebView ポップアップが閉じない

UWP アプリで使用IdentityModel.OidcClientし、Azure AD に接続しました。ログイン Web ビューが開き、自動的に閉じますが、ログアウト ポップアップは自動的に閉じません。

私の実装はこれに基づいています。ログアウトが発生すると、最後の関数呼び出しがここに移動しますが、ポップアップが手動で閉じるまで、このAuthenticateAsync関数呼び出し内で実行がハングします。

ログアウトは正しく行われますが、ポップアップは残ります。ログアウト後の URL も正しく構成されました。 ここに画像の説明を入力