IdentityServer 4,OpenIdConnect重定向到外部登录URL

Kir*_*ran 6 asp.net-mvc openid-connect asp.net-core identityserver4

我正在尝试构建多个小型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
});
Run Code Online (Sandbox Code Playgroud)

http://localhost:5000我的Identity服务器运行的端点在哪里.如果我的MVC服务器在,http://localhost:5002我看到当我[Authorize]向控制器设置属性时,它会重定向到我的身份服务器,如果检查失败,它会查找返回的登录页面http://localhost:5002/signin-oidc

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

在此输入图像描述

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

有可能做到这一点吗?

关心Kiran

pok*_*oke 35

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

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

因此,/signin-oidc端点是返回应用程序以完成 OpenId Connect身份验证流程的登录过程的方法.当用户到达此地址时,他们已经在Identity Server上登录,并且他们将被重定向回应用程序以继续他们最初停止的位置.

通常,用户在该路由上花费的时间是最小的,因为它将在处理登录请求之后立即重定向回"适当的"应用程序路由.

所以不,这里没有登录表格.登录过程本身由您的OpenId Connect身份验证提供程序Identity Server负责.这就是关于这一点的全部观点,因此您可以google.com使用您的Google凭据安全登录,而不是my-random-and-probably-untrusted-app.example.com绝对不应该使用您的实际Google凭据.