我正在尝试构建多个小型ASP.Net核心Mvc服务,这些服务连接到使用IdentityServer4构建的Identity服务器。
我在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
是运行我的标识服务器的端点。假设我的MVC服务器位于http://localhost:5002
我看到当我向控制器设置[Authorize]
属性时,它会重定向到我的身份服务器,如果检查失败,它会在{{}处寻找登录页面{1}}
现在我遇到的问题是我要登录页面由http://localhost:5002/signin-oidc
托管的Identity Server
托管,以便所有MVC服务都使用它来获取用户身份,但不幸的是我无法看到如何设置此http://localhost:5000/signin-oidc
。
我知道图表在引用流程时的工作原理是不准确的,只是想简化我想要完成的事情:)
是否有可能实现这一目标?
此致 基兰
答案 0 :(得分:28)
您似乎误解了/signin-oidc
路线的用途。一般流程如下:
"Cookies"
进行身份验证。
"oidc"
执行身份验证质询。
/signin-oidc
,这是OpenId Connect身份验证处理程序的远程登录地址。/signin-oidc
路由,并从Identity Server的登录请求中检索用户信息。因此,/signin-oidc
端点是返回应用程序以完成 OpenId Connect身份验证流程的登录过程的方法。当用户到达此地址时,他们已经登录了Identity Server,并且他们将被重定向回应用程序以继续他们最初离开的位置。
通常,用户在该路线上花费的时间很短,因为它会在处理完登录请求后立即重定向回“正确的”应用程序路线。
所以不,这里没有登录表格。登录过程本身由您的OpenId Connect身份验证提供程序Identity Server负责。这就是关于这一点的全部观点,所以你可以使用您的Google凭据安全登录google.com
,而不是my-random-and-probably-untrusted-app.example.com
,这绝对不会获取您的实际Google凭据。