サインイン¶
IdentityServerがユーザーの代わりにトークンを発行するには、そのユーザーはIdentityServerにサインインする必要があります。
Cookie認証¶
認証は、ASP.NET CoreのCookie認証ハンドラによって管理されるCookieで追跡されます。
IdentityServerは2つのCookieハンドラを登録します(1つは認証セッション用、もう1つは一時的な外部Cookie用です)。これらはデフォルトで使用され、手動で参照する場合はIdentityServerConstantsクラス(DefaultCookieAuthenticationSchemeおよびExternalCookieAuthenticationScheme)から名前を取得できます。
これらのクッキー(有効期限とスライド)の基本設定のみが公開されています。さらに制御が必要な場合は、独自のCookieハンドラーを登録できます。IdentityServerは、ASP.NETコアから使用DefaultAuthenticateSchemeするAuthenticationOptions場合に設定されたものと一致するCookieハンドラを使用AddAuthenticationします。
クッキーハンドラ設定のオーバーライド¶
独自のCookie認証ハンドラを使用する場合は、自分で設定する必要があります。これは、ConfigureServicesIdentityServerをDI(with AddIdentityServer)に登録した後に行う必要があります。例えば:
services.AddIdentityServer()
.AddInMemoryClients(Clients.Get())
.AddInMemoryIdentityResources(Resources.GetIdentityResources())
.AddInMemoryApiResources(Resources.GetApiResources())
.AddDeveloperSigningCredential()
.AddTestUsers(TestUsers.Users);
services.AddAuthentication("MyCookie")
.AddCookie("MyCookie", options =>
{
options.ExpireTimeSpan = ...;
});
注釈
IdentityServerは内部的に両方AddAuthenticationを呼び出し、AddCookie(定数を介してIdentityServerConstants.DefaultCookieAuthenticationScheme)カスタムスキームを使用します。したがって、それらをオーバーライドするには、後に同じ呼び出しを行う必要がありますAddIdentityServer。
ログインユーザーインターフェイスとID管理システム¶
dentityServerは、ユーザ認証のためのユーザインタフェースまたはユーザデータベースを提供しません。これらはあなたが提供したり開発したりすることが期待されるものです。
基本的なUI(ログイン、ログアウト、同意、管理)の出発点が必要な場合は、クイックスタートUIを使用できます。
クイックスタートUIは、メモリ内のデータベースに対してユーザーを認証します。これらのビットを実際のユーザーストアへのアクセスで置き換えます。ASP.NET IDを使用するサンプルがあります。
ログインワークフロー¶
IdentityServerが承認エンドポイントで要求を受信し、そのユーザーが認証されていない場合、ユーザーは構成済みのログインページにリダイレクトされます。オプションのUserInteraction設定を使用してログインページへのパスをIdentityServerに通知する必要があります(デフォルトは/account/login)。returnUrlパラメータは、ログインが完了すると、ユーザーをリダイレクトする必要がありますログインページを知らせる渡されます。
注釈
パラメータを介してオープンリダイレクト攻撃に注意してreturnUrlください。あなたはreturnUrlよく知られている場所を参照することを検証する必要があります。パラメータの検証には、API のインタラクションサービスを参照してreturnUrlください。
ログインコンテキスト¶
ログイン・ページでは、ログイン・エクスペリエンス(クライアント、プロンプト・パラメーター、IdPヒントなど)をカスタマイズするために、要求のコンテキストに関する情報が必要な場合があります。これはGetAuthorizationContextAsync、インタラクションサービスの APIを介して利用可能になります。
クッキーとクレームを発行する¶
HttpContextASP.NETコアには認証関連の拡張メソッドがあり、認証Cookieを発行してユーザーに署名します。使用されている認証スキームは、使用しているCookieハンドラと一致する必要があります(上記参照)。
ユーザーに署名するときは、少なくともsubクレームとクレームを発行する必要がありますname。IdentityServerは、これをより便利にするためのいくつかのSignInAsync拡張メソッドも提供していますHttpContext。
また、idp(アイデンティティプロバイダ名の)amrクレーム、(使用された認証方法の)auth_timeクレーム、および/またはクレーム(ユーザーが認証されたエポックタイム)をオプションで発行することもできます。これらを指定しないと、IdentityServerはデフォルト値を提供します。