IdentityServer4を使用して構築されたIdentityサーバーに接続する複数の小さなASP.NetコアMvcサービスを構築しようとしています。
このようなMVCサービスでOpenIdOptionを設定しました
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
});
ここで、http://localhost:5000
は、Identityサーバーが実行されているエンドポイントです。たとえば、MVCサーバーがhttp://localhost:5002
にある場合、コントローラーに[Authorize]
属性を設定すると、IDサーバーにリダイレクトされ、チェックが失敗すると、http://localhost:5002/signin-oidc
にあるサインインページが検索されます。
今私が抱えている問題は、ログインページをIdentity Server
でホストされているhttp://localhost:5000/signin-oidc
でホストして、すべてのMVCサービスがこれを利用してユーザーIDを取得するようにしたいということですが、残念ながら、これを設定する方法がわかりませんRedirectUrl
。
フローを参照してダイアグラムがどのように機能するかが不正確であることはわかっていますが、達成したいことを単純化しようとしています:)
これを達成することは可能ですか?
よろしくキラン
あなたはその/signin-oidc
ルートが何のためにあるのか誤解しているようです。一般的なフローは次のように機能します。
"Cookies"
に認証を要求します。"oidc"
に、認証チャレンジを実行するように要求します。/signin-oidc
にPOSTされます。/signin-oidc
ルートを処理し、IdentityServerによって行われたサインイン要求からユーザー情報を取得します。したがって、/signin-oidc
エンドポイントは、アプリケーションに戻ってcomplete OpenIdConnect認証フローのサインインプロセスに戻る方法です。ユーザーがこのアドレスに到達するまでに、ユーザーはすでにIdentity Serverにサインインしており、アプリケーションにリダイレクトされて、最初に中断したところから続行します。
通常、ユーザーがそのルートに費やす時間は最小限です。これは、サインイン要求が処理された直後に「適切な」アプリケーションルートにリダイレクトされるためです。
いいえ、ここにはログインフォームはありません。ログインプロセス自体は、OpenIdConnect認証プロバイダーであるIdentityServerの責任です。これが全体のポイントなので、たとえばgoogle.com
ではなく、my-random-and-probably-untrusted-app.example.com
に安全にログインしてください。実際のGoogle認証情報を取得することは絶対に避けてください。