我已经在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 Server运行的端点.如果我的MVC服务器位于http:// localhost:5002我看到当我向控制器设置[Authorize]属性时,它会重定向到我的身份服务器,如果检查失败,它会在http处查找登录页面://本地主机:5002 /登入-OIDC
现在我遇到的问题是我要登录页面由我的身份服务器托管在http:// localhost:5000 / signin-oidc,以便所有MVC服务只是利用它来获取用户身份,但不幸的是我无法看到如何设置此RedirectUrl.
我知道图表在参考流程时的工作原理是不准确的,只是想简化我想要完成的事情:)
有可能做到这一点吗?
问候
基兰
>用户访问ASP.NET Core站点.
> App要求默认身份验证方案“Cookies”进行身份验证.
> cookie身份验证处理程序尝试从(签名)cookie信息中恢复身份.
> Cookie身份验证失败,因为cookie丢失.
>应用程序要求默认质询方案“oidc”执行身份验证质询.
> OpenIdConnect身份验证处理程序重定向到OpenId Connect身份验证提供程序,这是您的Identity Server.
>用户在Identity Server上成功登录.
>用户被POST到/ signin-oidc,这是OpenId Connect身份验证处理程序的远程登录地址.
> OpenId Connect身份验证中间件处理/ signin-oidc路由,并从Identity Server发出的登录请求中检索用户信息.
> OpenId Connect身份验证方案创建身份验证票证并要求配置的登录方案登录用户.
> Cookie身份验证方案处理登录过程并创建用户身份.它将身份存储在cookie中,因此可以在将来的请求中检索它,而无需再次通过整个身份验证质询管道.
>用户已登录.
因此,/ signin-oidc端点是返回应用程序以完成OpenId Connect身份验证流程的登录过程的方法.当用户到达此地址时,他们已经在Identity Server上登录,并且他们将被重定向回应用程序以继续他们最初停止的位置.
通常,用户在该路由上花费的时间是最小的,因为它将在处理登录请求之后立即重定向回“适当的”应用程序路由.
所以不,这里没有登录表格.登录过程本身由您的OpenId Connect身份验证提供程序Identity Server负责.这就是关于这一点的全部观点,所以你可以使用您的Google凭据安全登录google.com,而不是my-random-and-probably-untrusted-app.example.com,这绝对不应该获取您的实际Google凭据.
