問題タブ [openid-connect]
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-web-api - SPA + WebAPI 向けの OpenID Connect ミドルウェア
Google を介して OpenID Connect で認証するために、WebAPI バックエンドを使用して SPA (Angular) アプリをアップグレード中です。理想的には、ハイブリッド フローを使用したいと考えています。
Google サインイン ボタンをクリックした後、ブラウザーが Google にリダイレクトし、同意画面を表示して、コードと ID トークンを含む応答をアプリに送り返すところまで来ました。公開されているシナリオのほとんどは、認証コードが返されたときに通知を起動するように MVC アプリを構成する方法を示しています。
私たちの場合、それは決して発生しません。その理由は、応答がアプリのサーバー側のエンドポイントではなく、SPA に返されるためだと思います。ここでの次のステップは何ですか?
- クライアントでコードを受け取り、Ajax リクエストを Web API レイヤーに送信してから、それをアクセス トークンと交換しますか? アクセス トークンを取得したら、js から API 呼び出しを行うときにトークンが有効であると認識されるように、ユーザーがサインインしていることをどのように伝えますか。
- Google に応答を Web API レイヤーに送信するように指示し、アクセス トークンのコードを交換して、最後にアクセス トークンを含むハッシュ フラグメントを含むリダイレクト応答を送信しますか? その場合、通知ハンドラは起動しますか?
どちらの場合でも、コードを交換するために OpenID ミドルウェアの何かを活用できますか? 投稿リクエストはそれほど複雑ではありませんが、可能であれば既存のライブラリを活用するとよいでしょう。
c# - ID は 1 時間後にベアラー トークンから消えます
Web アプリと Web API を使用した Azure AD を使用したマルチテナント ソリューションに取り組んでいます。Web アプリは、OpenIdConnect を使用して (Azure Redis Cache にキャッシュされている) ベアラー トークンを取得します。このトークンは、Web API から JSON を取得するために Angular で使用されます。ユーザーの偽装は、Web アプリと Web API (Azure AD アプリケーションで設定) の間で使用されます。
問題:
これは約 1 時間は正常に機能し、その後 Web API 側で ID が突然消えます。Web アプリを更新すると、ページが Microsoft ログイン ページにリダイレクトされていることがわかりますが、ユーザーは Web アプリにリダイレクトされるだけで、すべてが再び機能するため、何もする必要はありません。私が見る限り、Web アプリは失敗したときと更新後 (同じ有効期限) に再び動作するときに同じベアラー トークンを使用します。AuthenticationContext.AcquireTokenSilent は両方のシナリオで機能します。
さまざまなタイムアウトを増やしてみましたが、何も役に立ちませんでした。また、Web API でのベアラー トークン認証以外はすべて無効にしました。ID が消える理由と、クライアントの更新に役立つ理由がわかりません。何か案は?:)
追加情報
これは、(Web API での) ログインまたは更新の約 1 時間後に RequestContext.Principal.Identity がどのように見えるかを示しています。
そして、これは約 1 時間後です。これにより、認証が失敗します。
私が試したコードの変更のいくつか:
Web API HttpConfiguration で:
これにより、認証されていないプリンシパルが WindowsPrincipal から ClaimsPrincipal に変更されましたが、1 時間後にも失敗します。
Web アプリ web.config で:
Web アプリの認証プロセスで、タイムスパンが増加し、スライド式の有効期限が追加されました。それでも失敗します:
アップデート:
いくつかの詳細を具体化するには: ハイブリッド MVC Angular Web アプリケーションがあります。それぞれがそのメニュー項目のAngular「シングルページアプリケーション」につながる多くのMVCメニュー項目。MVC は、ルーティング、認証、承認に使用されます。さらに、追加のクレームが取得され、現在のプリンシパル サーバー側に追加されます。メニュー項目は、Authorized および ClaimsPrincipalPermission 属性で保護されている MVC コントローラーです。Web ページは Azure で実行されるため、既定の sessionProvider を Microsoft.Web.Redis.RedisSessionStateProvider に変更しました。MVC サーバー側のみがこの redis セッション キャッシュと通信します。ベアラー トークン (リフレッシュ トークンではない) は、認可された保護された MVC コントローラーを介して Angular と共有され、ブラウザー セッション ストレージに格納されます (adal. js は localstorage を使用しますか?) Angular は、MVC アプリとは別のドメインにある CORS 対応 API から JSON コンテンツを取得します。API と MVC アプリも、2 つの異なる Azure AD アプリケーションに属しています。
java - OAuth 2.0、Open ID 接続、および SAML
クライアント用の SSO サーバーを開発する必要があります。私のユースケースは、2 つのアプリケーションがあり、それらに独自のログイン画面を持たせず、ユーザーがアプリ 1 からアプリ 2 に簡単にジャンプできるようにすることです (アプリ 1 とアプリ 2 は独自のリソースを保持し、ユーザーの認証と承認のみを中央認証サーバーに依存する必要があります)。JavaでSSOサーバーを作成することについて読んでいました。oauth 2.0、open ID connect、SAML について読み始めました。読めば読むほど混乱します。
Oauth 2.0はSSOに使用できないと読んだ場所と、使用できると読んだ場所があります。
これら3つの仕組みについては、ある程度理解しています。しかし、これら 3 つが互いにどのように異なっているかを視覚化することはできません。
私は私の質問を下に置きます
- SSO に Oauth 2.0 を使用できますか
- データが非常に機密性の高い金融機関の Oauth 2.0 、 SAML 、および Open ID 接続で、どちらが優れているか。また、ネイティブのモバイル アプリも用意する予定です。また、この同じ SSO サーバーを使用してユーザーをログインさせます。
- Javaでこれらのいずれかを実装するライブラリはありますか. ドロップウィザード サーバーを使用する予定です
python - wso2is id_token に許可されていない改行文字が含まれています
wso2is サーバー v5.0.0 を使用して、OpenId Connect プロトコルを使用してユーザーを認証しようとしています。
アクセス トークン要求サーバーが仕様に従って JSON オブジェクトを作成した後: http://openid.net/specs/openid-connect-core-1_0.html#TokenResponse
id_token ファイルが無効であることに気付きました。このフィールドでは許可されていない改行文字 \r\n が含まれています。 7.2 p.9。
org.apache.commons.codec.binary.Base64 デコーダーはそのようなトークンを処理できるため、クライアントが Java 言語を使用する場合、これは問題ではありません。ただし、python パーサーはより制限的です。
これは wso2is v5.0.0 の既知のバグですか? この問題に対するパッチまたは修正プログラムはありますか?
よろしくマルシン