asp.net-mvc - IdentityServer 4、OpenIdConnect 重定向到外部登录 url

标签 asp.net-mvc asp.net-core openid-connect identityserver4

我正在尝试构建多个小型 ASP.Net 核心 Mvc 服务,这些服务连接到使用 IdentityServer4 构建的身份服务器。

我已经在 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] 时属性到 Controller ,它重定向到我的身份服务器,如果检查失败,它会在 http://localhost:5002/signin-oidc 上查找登录页面。

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

enter image description here

我知道该图在引用流程方面的工作方式不准确,只是试图简化我想要完成的工作:)

有可能做到这一点吗?

问候
基兰

最佳答案

你好像误解了什么/signin-oidc路线是为了。一般流程如下所示:

  • 用户访问 ASP.NET Core 站点。
  • 应用询问默认认证方案,"Cookies" , 进行身份验证。
  • cookie 身份验证处理程序尝试从(签名的)cookie 信息中恢复身份。
  • Cookie 身份验证失败,因为缺少 cookie。
  • App询问默认挑战方案,"oidc" , 执行身份验证质询。
  • OpenIdConnect 身份验证处理程序重定向到 OpenId Connect 身份验证提供程序,这是您的身份服务器。
  • 用户在身份服务器上成功登录。
  • 用户已发布到 /signin-oidc这是 OpenId Connect 身份验证处理程序的远程登录地址。
  • OpenId Connect 身份验证中间件处理 /signin-oidc路由并从 Identity Server 发出的登录请求中检索用户信息。
  • OpenId Connect 身份验证方案创建身份验证票证并要求配置的登录方案让用户登录。
  • Cookie 身份验证方案处理登录过程并创建用户身份。它将身份存储在 cookie 中,因此可以在 future 的请求中检索它,而无需再次通过整个身份验证挑战管道。
  • 用户已登录。

  • 所以/signin-oidc端点是返回应用程序以完成 OpenId Connect 身份验证流程的登录过程的方式。当用户到达此地址时,他们已经登录到身份服务器,并且他们将被重定向回应用程序以从他们最初停止的地方继续。

    通常,用户在该路由上花费的时间很少,因为它会在处理登录请求后立即重定向回“正确的”应用程序路由。

    所以不,这里不会有登录表单。登录过程本身由您的 OpenId Connect 身份验证提供程序(您的身份服务器)负责。这就是重点,所以你例如安全登录 google.com使用您的 Google 凭据而不是在 my-random-and-probably-untrusted-app.example.com这绝对不应该掌握您的实际 Google 凭据。

    关于asp.net-mvc - IdentityServer 4、OpenIdConnect 重定向到外部登录 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45458612/

    相关文章:

    c# - 创建一个列表来显示字典的内容?

    jquery - Asp.net MVC with Entity,使用jquery将数据传递到List中。不起作用

    asp.net-mvc - Asp.net Core OpenIdConnect (OIDC) 在哪里验证状态参数

    c# - 在同一主机和端口下运行多个应用程序

    asp.net-core - 如何在 ASP.NET Core 中共享程序集信息?

    dotnetopenauth - OpenID Connect 提供者实现

    identityserver3 - asp .net core 2.0中的多种身份验证方案

    javascript - md-autocomplete 搜索本地(浏览器对象),如果找不到,则查找数据库对象

    c# - 在 Moq 上使用与 UserManager 的接口(interface)

    Azure 套接字泄漏?