認証/認証にIdentityServer3(IdSvr3)を使用しています。サイトBにログインせずに、エンドユーザー(またはリソース所有者:RO)が第2の信頼できるWebサイト(サイトB)にログイン(ログスルー)できる機能を提供したいと考えていますウェブサイト(サイトA)。サイトBは、ROの異なるリソースセットを管理します。 ROがIdSvr3ログイン/同意画面にリダイレクトされないことが重要です。私が今までに見つけたアプローチは、サイトAの内部で、RequestResourceOwnerPasswordAsync(usernameとpasswordを渡してscope = "openid ...")を呼び出してアクセストークンを作成する方法です。このアクセストークンは、ROを認証できるサイトBに送信されます。サイトBは、connect/userinfoエンドポイントを呼び出してユーザー情報を取得します。私はこれが正しいアプローチ/フローであるかどうかを知りたい。 ROはサイトBではなくサイトAに最初に入ると仮定しています。 これについて私に考える時間をとってくれてありがとうございます。既存のログイン画面と信頼できる第2のWebサイトでSSOを適用する方法
0
A
答えて
1
あなたがここでできることは、サイトBスコープのIDサーバーに認証要求を送信し、id_tokenまたは参照トークンを要求することです。プロンプト= noneを使用しているidsrvに許可要求を送信する際に、ユーザーが既にサイトAにログインしている場合に再び同意を示すことなくaccess_tokenを取得するようにしてください。 以下は同じJSファイルから。サイトAでは、このスクリプトファイルを参照し、IIFEを使用してスクリプトを実行できます。
function getIdentityServerURL() {
var url = global.appSettings.identityServerURL
+ "/connect/authorize?client_id=siteB&response_type=id_token token&redirect_uri="
+ global.appSettings.siteBUrl + "/Main/SsoCallback&scope=siteBscope openid email roles&prompt=none&nonce="
+ genNonce();
return encodeURI(url);
}
上記のコードでは、仮想のiframeを作成して認証要求から結果を減少させた後、サイトBに戻ってトークンを投稿することができSsoCallbackページにリダイレクトされます。以下のコードを参照してください。
<script type="text/javascript">
var identityresult = window.location.hash.split('&').reduce(function (result, item) {
var parts = item.split('=');
result[parts[0]] = parts[1];
return result;
}, {});
window.parent.postMessage(identityresult, '*');
スクリプトがイベントをのpostMessageを聞くことができます。お役に立てれば。
関連する問題
- 1. 第1画面から第2画面に渡された第2画面にデータを表示する方法
- 2. Webアプリケーションの既存の画面にGWT画面を追加できますか?
- 3. 既存のサイトにDreamweaverテンプレートを適用する方法
- 4. Xcode3の既存のViewControllerの前にログイン画面を追加する方法
- 5. プログラムでWebサイトにログインする方法
- 6. 既存のWebサイトと簡単に統合できるPHPフォーラムソフトウェア?
- 7. ウェブサイトでログイン用のjqueryがあるときにPythonリクエストを使用してWebサイトにログインする方法は?
- 8. SSO用Azure ADとの既存のWebアプリケーションの統合
- 9. CMSを既存のWebサイトに統合する方法
- 10. 既存のSSL証明書をAzure Webアプリケーションにプログラムで適用する方法
- 11. ASP.Net、異なるサイズの画面でWebサイトのサイズを修正する方法
- 12. 既存のサイトでSCSSを使用する方法
- 13. 起動画面を第2タブにする方法
- 14. SSO(シングルサインオン)を適用する方法
- 15. Facebook SSOと第三者のサイト登録は一段階で?
- 16. 既存のラリー画面をカスタマイズする
- 17. 既存のWebサイトでのリアクションでのES6の使用
- 18. ログイン画面の作成、WPF、ユーザー名とパスワードの保存方法
- 19. SSO 2回目のログインを処理する方法
- 20. Openid Serverは信頼できるサイトをIDで保存します
- 21. WHS 2011、既存の第2サブタブの拡張方法
- 22. pentaho biサーバーのホーム画面とログイン画面の変更方法
- 23. 異なるプラットフォームの2つのWebサイト間のSSO
- 24. 信頼できるサイト(IE8)のwindow.openerに関する問題
- 25. IEのローカルイントラネットに信頼できるサイトを追加します。
- 26. QML 2で画面の向きをロックする方法は?
- 27. Angular 2/4:ポップアップで既存のコンポーネントインスタンスを使用する方法?
- 28. Python用の信頼できるタイムゾーンライブラリまたはWebサービス
- 29. ユーザーが既にログインしているときにユーザー画面のロックページを作成する方法は?
- 30. DotNetOpenAuth - 信頼する側が信頼できるサイトでOpenIdのログインリダイレクトがハングアップする
オーナーのパスワードの要求とシングルサインオンを要求することができません。あなたのデザインを再考してください。ユーザーがサイトBにログインする必要はなく、トークンを使用してリソースにアクセスする必要がある場合、サイトBはWebApiのように見えます。 – rawel
答えにはrawelありがとうございます。私はサイトBの役割と目的も評価していました。それだけでなく、現在のログインページをカスタマイズしたIdSvr3ログインページに置き換えることをお勧めします。 – Vincent65535