問題タブ [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.
c# - 手動構成での AddOpenIdConnect - SecurityTokenSignatureKeyNotFoundException
既存のシステム
Identity Server 4 を使用して、Google、Azure、またはその他の外部プロバイダーとのシングル サインオン機能を問題なく提供しています。クライアントの詳細と権限 URL またはディスコ URL (例: .well-known/openid-configuration
) を追加するだけで、すべてが期待どおりに機能します。
シナリオ
私たちの外部 ID プロバイダーの 1 つは、公開の Discovery Document の URL を提供することはできず、内部でのみ非公開にしたと述べています。次に、Json ファイル (その URL によって提供される正確な json テキストを含む) として提供されました。そのため、その json ファイルの値を使用して、 および を使用して、これらすべてのエンドポイント URL と設定を手動で設定しようとしていAddOpenIdConnect
ますOpenIdConnectConfiguration
。
Authorize リクエストの外部プロバイダーに正しくリダイレクトされ、外部システムにサインインできます。しかし、リクエストが Idsrv4 に戻ってきたとき、id_token
. を取得してSecurityTokenSignatureKeyNotFoundException
います。設定しようとしましたJwksUri
が、まだ運がありません。
Demo Identity サーバーを使用して同じ動作を再現することができました。以下を参照してください。
私たちが得ているエラーは
jwksUri: https://demo.identityserver.io/.well-known/openid-configuration/jwksを確認しようとしましたが、正しい子供 '3BA75FA392E4DAFAC2737B5B4644AA85' が表示されます。
そのため、構成を手動で設定すると、Idsrv4 がこれらのキーを正しくロードしていないように思えます。
ConfigurationManager
次のように使用して手動で SigningKeys をロードすることをお勧めします。
ただし、そのエンドポイント URL にアクセスできないため、うまくいきません。
Idsrv に jwksUri からキーをロードさせるか、手動でキーを提供させる方法はありますか?
この署名キーの例外を解決する方法を提案していただけますか?
asp.net-mvc - IdentityModel 対 Microsoft.IdentityModel 対 System.IdentityModel
OWIN を使用して従来の ASP.net MVC アプリケーションで OIDC/OAuth 認証と承認を実装しています。Microsoft の OIDC ミドルウェアでサポートされていない API 呼び出しについては、いくつかの選択肢があるようです。
- IdP に直接休憩リクエストを作成して作成できます。
- System.IdentityModel に含まれるクラスを使用できます。
- Microsoft.IdentityModel に含まれるクラスを使用できます。
- Dominick Baier と Brock Allen によって構築された IdentityModel をインストールして使用できます
他の選択肢もあるかもしれません。上記の中で、Dominick と Brock による IdentityModel は、最も成熟し、高度で、完全であるように見えます。
OWIN で従来の ASP.net MVC を使用している場合、どちらかの方法を優先する必要がありますか?それとも上記の方法を組み合わせて使用する必要がありますか? どちらか一方をどこで使用しますか?長所と短所は何ですか?
System.IdentityModel と Microsoft.IdentityModel を比較した古い記事がいくつかあることは知っていますが、2020 年のベストは何かにもっと興味があります。:-)
マーク