2017-08-02 11 views
1

IdentityServer4を使用して構築されたIDサーバーに接続する、複数の小さなASP.NetコアMvcサービスを構築しようとしています。IdentityServer 4、OpenIdConnect外部のサインインURLにリダイレクトする

私はhttp://localhost:5000が私のアイデンティティサーバーが稼働しているエンドポイントであるこの

app.UseCookieAuthentication(new CookieAuthenticationOptions 
{ 
    AuthenticationScheme = "Cookies" 
}); 

app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions 
{ 
    AuthenticationScheme = "oidc", 
    SignInScheme = "Cookies", 

    Authority = "http://localhost:5000", 
    RequireHttpsMetadata = false, 

    ClientId = "mvc", 
    ClientSecret = "secret", 

    ResponseType = "code id_token", 
    Scope = { "api1", "offline_access" }, 

    GetClaimsFromUserInfoEndpoint = true, 
    SaveTokens = true 
}); 

のように見えるMVCサービスにセットアップOpenIdOptionを持っています。私のMVCサーバがhttp://localhost:5002であるならば、私はコントローラに[Authorize]属性を設定するとき、それは私のアイデンティティサーバーにリダイレクトし、チェックが失敗した場合、それは今http://localhost:5002/signin-oidc

問題私に戻ってサインインページを探していることがわかり言いますすべてのMVCサービスがこれを利用してユーザーIDを取得するように、私はIdentity Serverでホストされるログインページをhttp://localhost:5000/signin-oidcにホストすることにしましたが、残念ながら私はこの設定方法を見ることができません。RedirectUrl

enter image description here

私は図が、それはちょうど私が:)

を達成したいものを簡素化しようとすると、フローを参照してどのように機能するかに不正確である知っているが、これを達成することが可能ですか?

よろしく キラン

答えて

12

あなたは/signin-oidcルートが何のためにあるのか誤解しているようです。一般的なフローは次のようになります。

  1. ユーザーはASP.NETコアサイトにアクセスします。
  2. 最初の認証方式"Cookies"が認証されます。
    1. Cookie認証ハンドラは、(署名された)Cookie情報からIDを復元しようとします。
    2. Cookieが存在しないためCookie認証が失敗します。
  3. 第2認証方式"oidc"が認証されるように求められます。
    1. OpenIdConnect認証ハンドラは、OpenId Connect認証プロバイダにリダイレクトされます。これは、アイデンティティ・サーバーです。
    2. ユーザーがIdentity Serverに正常にログインします。
    3. ユーザはOpenId Connect認証ハンドラのリモートサインインアドレスである/signin-oidcにPOSTされます。
    4. OpenId Connect認証ミドルウェアは/signin-oidcルートを処理し、Identity Serverによって行われたサインイン要求からユーザー情報を取得します。
    5. OpenId Connect認証スキームでは、認証チケットが作成され、設定されたサインイン方式にサインインするように求められます。
  4. Cookie認証方式は、サインインプロセスを処理し、ユーザーIDを作成します。それは、アイデンティティをクッキーに格納するので、認証パイプライン全体を再度通過することなく、将来のリクエストで取り出すことができます。
  5. ユーザーがサインインしている。

ので/signin-oidcエンドポイントは完全に戻ってアプリケーションにOpenIDの接続認証フローのサインインプロセスを返す方法です。ユーザーがこのアドレスに到達するまでに、ユーザーはすでにIdentity Serverにサインインしており、アプリケーションを元に戻すためにアプリケーションにリダイレクトされています。

通常、ユーザーがそのルートで過ごす時間は、ログイン要求が処理された直後に「適切な」アプリケーションルートにリダイレクトされるため、最小限に抑えられます。

いいえ、ここにはログインフォームはありません。ログインプロセス自体は、OpenId Connect認証プロバイダ、つまりIdentity Serverの責任です。それはこれに関する全体のポイントです。 my-random-and-probably-untrusted-app.example.comではなく、Google認定資格でgoogle.comに安全にログインしてください。実際にはGoogleの資格情報が得られないはずです。

+0

ありがとうございます!これは本当に私の日を救った。アイデンティティ・サーバーのクライアント属性の 'RedirectUris'と混同しました。これが正しくないときはログインページが表示されなかったので、これはコールバックであると仮定しました。 – Kiran

関連する問題