2016-11-28 7 views
3

IdentityServer3、Kentor.AuthServices 0.19(OWINミドルウェアを使用)と標準のMVC 4 WebApi 2アプリを使用して、https://github.com/KentorIT/authservices/blob/master/doc/IdentityServer3Okta.md の手順に従っており、IDP開始によるログインが成功したようです。しかしOkta Kentor.AuthServices IdentityServer3 IDPによって開始されたSSOがSPによって開始されたSSOエラーまたはデザインをトリガーしていますか?

、我々はこれを密接に見て、(私たちが最初に我々は、SAML応答を提供するように促された気づい)KentorStubIdpを使用して、我々は、例えば、以下の

  1. IDPは、私たちのエンドポイントを打つましたidentityserver/okta/ACS、identityserver認可エンドポイントにリダイレクトを返すようにコーディングされている我々のアプリで私たちのリダイレクトエンドポイントにステータス303
  2. 成功リダイレクト、これ var client = new AuthorizeRequest(new Uri(identityServerUrl + "connect/authorize")); var returnUrlForIdp = client.CreateAuthorizeUrl( "{client_identifier}", "id_token token", scopesForAuth, hostUrl, state, nonce, acrValues: string.Format("idp:{0}", idp), responseMode: "form_post" ); return Redirect(returnUrlForIdp);
  3. これは/接続/ identityserverために302になり許可する。これには、必要なログイン情報がすべて含まれているようだが、私はアプリケーションに200回も入ると予想していたが、代わりに302のidentityserver/login?signin = xxxに401が表示されている...
  4. その後のログインエンドポイントの呼び出しでは、303リダイレクトがIDPに戻され、最終的に成功したSP開始ログインの開始を示します。これは、identityserver/okta/acs、/ callbackエンドポイント、次に/ connect/authorizeに戻り、ユーザがログインしたことを意味します。

最初のコールと2番目のコールの間に意味のある違いはありません/

  1. 以外認可成功した試みがidentityserverの呼び出しによって先行される/ idsvrとidsvr.sessionのためのコールバック
  2. クッキーは、最初の呼び出しで設定されていないように見えるが、第2
であります

また、Kentorの設定は整然としているようです。 AllowUnsolicitedAuthnResponse = true AuthenticationMode = Microsoft.Owin.Security.AuthenticationMode.Passiveこの最後の1は私がちょうど動作するようにしようとしている。この時点で、効果のいずれかの方法

を持っていないようでしたが、a)は、これはカバーの下で働くことになっている方法であるかどうかとb)そうでなければ、問題を診断するためにどこに注意を払うべきか。

IDPによって開始された情報に不足している情報がある場合に、AuthservicesがSPから開始されるSAML要求を開始する特定の一連のサーストリームが存在しますか。

アドバイスをいただければ幸いです。

+0

手順1でCookieが正しく設定されているかどうかを確認できますか?私。 AuthServices認証がIdSrvログインセッションを作成する場合 –

+0

@AndersAbel私がKentorStubIdpを使用している場合、SPが開始した試み(つまり、IDPがstubidp.kentor(ヒットログイン)を開始したことから始まる)からIdentityServer/stubidp/acs> RpRedirect> IdentityServer/Connect/Authorize> stubidp Kentor.xxxxxx、idsrv.external、signinmessageの3つのCookieがあります。#######。それがログインセッションを構成するかどうかはわかりません。 –

答えて

1

SAML2 + OIDCでIdp開始サインオンを使用するのは、OIDCがサポートしていないため、少しトリッキーです。つまり、IdSrv3は実際にはそのシナリオ用に構築されていません。

あなたが必要となるものの概要は次のとおりです。

  1. IDPはIdSrv3/AuthServicesに迷惑応答を送信します。
  2. AuthServicesが応答を確認します
  3. IdSrv3はIdSrv3でログオンセッションを確立します。
  4. ユーザーはクライアントアプリケーションのログインinit URLにリダイレクトされます
  5. クライアントアプリケーションは、IdSrv3に向けてOIDC sigを開始します。
  6. IdSrv3 3回にサインオンしてセッションを確立しました。
  7. ユーザーはクライアントアプリケーションにリダイレクトされます。

手順2のように見えますが、手順3が正しく行われていません。これは、ステップ6ではセッションがないことを意味します。そのため、ユーザーは既存のセッションを取得するためにIdpに至るまでリダイレクトされます。これはうまくいくが、やや醜い。後でシングルサインアウトをしたい場合は、セッションカウントの不一致が問題を引き起こす可能性があります。

+0

Erik Dahl(kentorプロジェクトサイトで文書化されたKentor> Oktaの例題に携わっていた人)と話し、IDPによって開始されたアプローチは、SPによって開始された呼び出しを(追加の要求を得るために)設計します。それを明確にするために、ドキュメントを更新する価値があるかもしれません。私たちはそれを必要としませんが、私たちはさらなる調査の時間が来るまでは、そのまま残す必要があるかもしれないと思います。ステップ3を修正するのは簡単かもしれませんが、おそらくIdServerのことでしょうか? –

関連する問題