加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – IdentityServer 4,OpenIdConnect重定向到外部登

发布时间:2020-12-16 09:19:07 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试构建多个小型ASP.Net核心Mvc服务,这些服务连接到使用IdentityServer4构建的Identity服务器. 我已经在MVC服务上设置了OpenIdOption,看起来像这样 app.UseCookieAuthentication(new CookieAuthenticationOptions{ AuthenticationScheme = "Cookies"}
我正在尝试构建多个小型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是我的Identity Server运行的端点.如果我的MVC服务器位于http:// localhost:5002我看到当我向控制器设置[Authorize]属性时,它会重定向到我的身份服务器,如果检查失败,它会在http处查找登录页面://本地主机:5002 /登入-OIDC

现在我遇到的问题是我要登录页面由我的身份服务器托管在http:// localhost:5000 / signin-oidc,以便所有MVC服务只是利用它来获取用户身份,但不幸的是我无法看到如何设置此RedirectUrl.

enter image description here

我知道图表在参考流程时的工作原理是不准确的,只是想简化我想要完成的事情:)

有可能做到这一点吗?

问候
基兰

解决方法

您似乎误解了/ signin-oidc路由的用途.一般流程的工作方式如下:

>用户访问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凭据.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读