問題タブ [angular-oauth2-oidc]
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.
angular - Angular に Refresh Token を実装する
私は、このSpring
セキュリティの実装に取り組んOAuth2
でいJWT
ます:
著者によると、次のようにトークンを使用してリソースにアクセスできます。
リソースにアクセスするには (ResourceServer を構成した別のアプリケーションが必要です):
http localhost:8080/users 'Authorization: Bearer '$ACCESS_TOKEN
このステップについて:
更新トークン機能を使用するには:
http --form POST adminapp:password@localhost:9999/oauth/token grant_type=refresh_token refresh_token=$REFRESH_TOKEN
Angular
トークンを更新する必要があるときと、この部分をアプリでどのように処理できるかは明確ではありません。
トークンを時々更新するタイマーを実装する必要がありますか、またはこの機能を実装する別の方法はありますか?
refresh - Google Chrome をバージョン 85 に更新した後、サイレント更新が機能しない
angular-oidc-auth2 v9.0.3 を使用して、サイレント リフレッシュによるトークンの更新をリクエストしています。暗黙的なフローを使用しています。Google chrome がバージョンを 85 に更新するまでは問題なく動作していました。リクエストを確認したところ、Google chrome には以前はリファラー ポリシー: no-referrer-when-downgrade があり、すべて問題なかったことがわかりました。バージョン 85 からは、リファラー ポリシーがデフォルトになっています: strict-origin-when-cross-origin。その後、トークンの更新に失敗し始めました。セキュリティ上の理由から、コードを共有することはできませんが、ID サーバーはアプリケーションとは異なるドメインにあります。リファラーポリシーのサイレントリフレッシュリクエストのヘッダーを設定できる方法はありますか? またはそれを解決できる他の方法はありますか?
javascript - OAuth2 および angular-auth2-oidc ライブラリの問題 - PKCE コード フロー
私は OAuth2 とangular-auth2-oidcライブラリが初めてなので、初心者の間違いを犯しても我慢してください。
達成したいこと:ユーザーがホームページのログイン リンクをクリックすると、プロバイダーのサイトに送られ、ログインしてから、トークンを使用してホームページにリダイレクトされます。
これまでの結果:ユーザーはプロバイダーのサイトに送られ、ログインし、サイトのホームページに正常に戻されましたが、トークンを取得できませんでした。のコンソールにいくつかのデータを出力しましたがngOnit()
、それらはすべて null、未定義、または false です。
ngOnit()
関数内でもいくつかのイベントを出力し、コンソールで取得するイベントはtoken_refresh_error
. コードで明示的にトークンの更新を行っていませんが、それでもこのエラーが発生します。
この投稿のエラーサブヘッダーの下に、エラーに関するスクリーンショットを追加しました。
ここに私の設定と実装があります:
私の OAuth2 プロバイダーの openid 構成は次のとおりです。
これが私の実装です:
// ホームページ コンポーネント
// ログイン関数を含むクラス
// エラー / エラーのスクリーンショット
ユーザーがホームページにリダイレクトされたときのコンソールのエラーは次のとおりです。
1)このスクリーンショットでは、検出ドキュメントが読み込まれる場合を除いて、値は null、false、または未定義です。
2)次のスクリーンショットでは、 EVENT-TYPEの 1 つが であることがわかりますtoken_refresh_error
。EVENT-REASONはですBAD REQUEST
。https//DOMAIN_PROVIDER/op/v1/token
de initOAuthConfig()メソッドにtokenEndPoint
属性を追加しましたが、リクエストを送信しようとして失敗しています。エラーが であることもわかりますerror: "invalid_grant"
。スクリーンショットの 2 行目は、トークンの取得中にエラーが発生したことを示しています
問題が解決すると考えてinitOAuthConfig()に追加jwks: {'keys': ['https://DOMAIN_PROVIDER/op/v1/keys']}
しましたが、解決しませんでした。
// コンソールのアプリケーション タブ: セッション ストレージ
コンソールのアプリケーション タブから、セッション ストレージにデータのキーと値のペアがいくつかあることがわかります (ローカル ストレージにはデータがありません)。次のスクリーンショットを参照してください。