問題タブ [oidc-client-js]
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.
asp.net-mvc - Cookie ベースの外部 ID プロバイダーのログインとトークンの委任を使用した単一ページ アプリケーション
サード パーティの Open ID Connect プロバイダー (Google や Microsoft など) を使用して単一ページ アプリケーションのシームレスなログイン フローを作成し、外部プロバイダーから返された既存の jwt トークンから、ページを更新せずに新しい jwt トークンを生成するにはどうすればよいでしょうか?
たとえば、ユーザーが Google にログインできるようにしてから、自分のサイトに戻して、IdentityServer4 を使用してトークン サーバー側を検証し、特定のクレームを抽出して新しい JWT (独自のロジック) を生成できるようにしたいと考えています。
リダイレクト時に Open Id プロバイダーからの JWT トークンを検証する既存の IdentityServer4 エンドポイントはありますか?その後、独自のトークン作成フローを挿入するための最良の方法は何ですか? 最終結果は、理想的には、SPA が行うすべての http 要求で送信される新しい JWT トークンを含む Cookie です。
私の最善の推測は、oidc js クライアントを使用して、Google のユーザー マネージャーをセットアップすることです。たとえば、次のようになります。
ただし、リダイレクトでは、Google がコントローラーに Cookie を送信する必要があります。これにより、IdentityServer を使用してトークンが検証され、ユーザー ID などのクレームが抽出され、API の新しいトークンが生成されます。これは、IdentityServer を使用して独自の ID プロバイダーをホストしていることを前提としています。この最後の部分を達成するために IdentityServer4 を使用するにはどうすればよいですか?
リダイレクト コールバックが呼び出された後、ポストバックでトークンが生成されるため、これは MVC パターンで簡単に実行できます。SPA では、最小限のリダイレクトが必要です。理想的には、ユーザーがログインできるようにポップアップが表示され、SPA が引き継ぎます。外部 ID プロバイダーから IdentityServer4 認証サーバーまたは MVC サーバーにリダイレクトし、事実上の構成の中断を最小限に抑えて新しいトークンを生成する方法を理解できませんでした。
Google は、サーバーがトークンを検証する必要があることをお勧めします ( https://developers.google.com/identity/protocols/OAuth2UserAgent#validate-access-token )。考えられる解決策の 1 つは、検証後にリダイレクト コールバックで新しいトークンを生成することです。ただし、IdentityServer4 はトークンを検証することになっていませんか、それともサーバー上で自分でこれを行う必要がありますか? ここで、IdentityServer4 はトークンの検証でどのような役割を果たしますか。このステップを自分でコーディングしたくありません。
c# - IdentityServer4 PostLogoutRedirectUri null
IdentityServer4 で暗黙的なフローを機能させようとしています。ログインとログアウトは正しく機能しますが、設定する必要がある場所に値を設定しているにもかかわらず、PostLogoutRedirectUri が null に戻ってきます。私が望むのは、ログアウトが完了した後、ログアウト プロセスがアプリケーションにリダイレクトされることです。
logoutId を正しく取得しています。Logout は BuildLoggedOutViewModelAsync を呼び出します。
このメソッドは AccountService.cs クラスにあり、次に DefaultIdentityServiceInteractionService の GetLogoutContextAsync を呼び出します。
IdentityServer4.Models.LogoutRequest を作成します。
SignOutIFrameUrl
文字列プロパティはに設定されてい"http://localhost:5000/connect/endsession/callback?sid=bf112f7785bc860fcc4351893012622e&logoutId=d6649e7f818d9709b2c0bc659696abdf"
ますが、LogoutRequest には他に何も入力されていないようです。
残念ながら、これはPostLogoutRedirectUri
が null であり、AutomaticRedirectAfterSignOut
も null であることを意味し、LoggedOut.cshtml
ページが読み込まれるときにsignout-callback.js
ファイルが読み込まれることはありません。
ここに私の構成設定があります。
構成.cs:
app.ts (js クライアント):
Startup.cs の関連部分:
どこが間違っているのかを理解するための支援をいただければ幸いです。
ありがとう!
asp.net-identity - aspnet ID と JavaScript クライアントを使用する IdentityServer4
IdentityServer4 を実装しようとしています。すべてのクライアントは JavaScript アプリになります (react js 内)。私の質問は次のとおりです。
1.- カスタム ユーザー データベースを用意するので、6 番目の例のように Aspnet ID を使用して IS4 を実装しようとしています。しかし、私のクライアントは Javascript ベースであるため、暗黙的なフローを使用する必要があり、例では (MVC クライアントで行われているように) HybridAndClientCredentials を念頭に置いて作成されています。また、MVC ログイン アプリには同意手順が含まれていないようです。AspnetIdentity の例と組み合わせて JavaScript クライアントの例を実装しました。最初にエラーが発生しました: IdentityServer4.Validation.ScopeValidator: エラー: 無効なスコープ: api2 (api2 はクライアントが呼び出す Api) ですが、api2 はクライアント定義に含まれています:
先に進むために、クライアント呼び出しからそのスコープを削除しましたが、うまくいきました。ログインしましたが、同意の手順がないため、クライアントがクラッシュしました。
だから、私はここでちょっと迷っていると思います。consetステップをスキップする方法を見つける必要がありますか?? (どちらの方法でもそのステップを望まないので、それは良いことです。すべてのユーザーは内部になります)。
2.- また、サンプル 8_EntityFrameworkStorage のようなすべての構造をデータベースに永続化する必要があります。この方法を AspIdentity と組み合わせて使用できますか?
参照されたサンプル: https://github.com/IdentityServer/IdentityServer4.Samples
読んでいただきありがとうございます。