問題タブ [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.

0 投票する
0 に答える
1764 参照

angular - 手動でsigningSilentを呼び出したときのoidc-clientフレームエラー

少し奇妙なもの。私のAngularアプリには、refreshUserすべての画面データを表示する前に、ログインしている可能性のあるユーザーをロードする方法があります。そのために、次のngOnInit方法があります。

refreshUser メソッドには次のコードがあります。

真新しいナビゲーションでは、これはスムーズに機能し、エラーが発生します:

(ユーザーはログインしたことがありません)。

奇妙なシナリオは、ログインしているユーザーがいる場合、Web ブラウザーを閉じて再度開くと、画面が約 10 秒間ハングした後、別のエラーが発生することです。

しかし、画面がロードされて「ログイン」をクリックすると (ユーザーがログインしていないため)、コンポーネントをロードする前に「クラシック」AuthGuard がトリガーされるため、標準を実行しますstartAuthentication()

これにより、ユーザーはすばやくログインします。私の質問は、ユーザーのサインインに関して、その関数とsigningSilent関数の違いは何ですか? ただし、少なくともタイミングとユーザーエクスペリエンスの点では、動作は期待されていません。「可能であればユーザーをログインできるが、ログイン画面を表示しない」ようにしたい。それは理にかなっていますか?

ありがとう!

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

angular - signinRedirect 呼び出し時の Oidc-client 無限ループ

oidc-client-js で angular 8 を使用しています。IdentityServer4 (コード フロー + PKCE) に接続しています。アプリ (メイン コンポーネント内) を開いた後、ユーザーが認証されているかどうかを確認します。そのため、signinRedirect() を呼び出します。ボタンを手動でクリックする代わりに、コンストラクター内で呼び出すだけです (ボタンをクリックして signinRedirect() を呼び出すだけで、フロー全体が機能しました)。問題は、私が無限ループに陥っていることです。Angular は IdenityServer を呼び出し続け、ログイン ページを更新します。サーバーへの API 呼び出し (および結果としてログイン ページへのリダイレクト) は正常に機能しますが、停止しません。助けてください。

ユーザーは angular アプリに入ります。次に、承認エンドポイントを呼び出します (signinRedirect、コード フローで必要なサーバーのものを送信します) - サーバーは、ユーザーがログインしているかどうかを確認します。ログインしていない場合は、ログイン ページにリダイレクトします。問題は、(signinRedirect) を呼び出すボタンをクリックするとシナリオが機能するが、コンポーネントが開いているときにそれを実行すると機能しないことです。ループはログで終了します - ログインの表示: ユーザーは認証されていません。ループは HTTP/1.1 GET http://localhost:5555/.well-known/openid-configurationを開始するリクエストで始まります。その後 - HTTP/1.1 GET を開始するリクエストhttp://localhost:5555/connect/authorize?response_type=code&client_id=ng&state=kYkvO3CO4SW3asopth-dmZW8SYkuyz79Npfn0K4MPAMCT&redirect_uri=http%3A%2F%2Flocalhost%3A4200%2Fcallback&scope=openid%20API&code_challenge=2iGwqANCfZGshjmhDmmwm4Eh4Q8SowgPcImf1-CsDzs&code_challenge_method=S256&nonce=kYkvO3CO4SW3asopth-dmZW8SYkuyz79Npfn0K4MPAMCT . それが繰り返されます。