2017-08-02 76 views
1

我正在尝试构建多个连接到使用IdentityServer4构建的Identity Server的小型ASP.Net核心Mvc服务。IdentityServer 4,OpenIdConnect重定向到外部登录URL

我已经安装,看起来像这样

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服务OpenIdOption是上我的身份运行服务器的端点。说,如果我的MVC的服务器是在http://localhost:5002我看到,当我设置[Authorize]属性控制器,它重定向到我的身份服务器,如果校验失败,它会寻找登录页面回http://localhost:5002/signin-oidc

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

enter image description here

我知道这个图是如何参照工程的流量不准确的,只是想简化我要完成:)

是有可能做到这一点呢?

问候 基兰

回答

12

你似乎误解/signin-oidc途径是什么。总体流程如下:

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

所以/signin-oidc点要回你的应用程序返回到完整的ID连接认证流程的登录过程的方式。当用户到达这个地址时,他们已经登录了身份服务器,并且他们正在被重定向回应用程序,以继续他们最初离开的地方。

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

所以不,这里不会有登录表单。登录过程本身是OpenId Connect身份验证提供程序(您的Identity Server)的责任。这就是关于这点的全部观点,所以你请使用您的Google凭据安全地登录google.com,而不是登录my-random-and-probably-untrusted-app.example.com,这肯定无法获得您的实际Google凭据。

+0

谢谢!这真的拯救了我的一天。我对Identity Server客户端属性上的'RedirectUris'感到困惑。当这是不正确的,我没有看到登录页面,所以我认为这是一个回电。 – Kiran