身份服务器在/ connect / authorize / callback中始终显示“正在显示登录名:用户未通过身份验证”

问题描述 投票:5回答:1

使用IdentityServer4,我正在现有的系统上实现代码流授权,该系统仅支持IdentityServer中的ResourceOwnerPassword授予类型,并且运行良好。

我进入了一个升级用户身份验证,然后重定向到server connect/authorize/callback的阶段

此后,它不进行身份验证并返回登录页面。从日志中,我得到以下信息:

  1. 为/ connect / authorize / callback调用IdentityServer端点:IdentityServer4.Endpoints.AuthorizeCallbackEndpoint

  2. ValidatedAuthorizeRequest

    {
    "ClientId": "demo",
    "ClientName": "MVC Client Demo",
    "RedirectUri": "http://localhost:5002/signin-oidc",
    "AllowedRedirectUris": ["http://openidclientdemo.com:8001/signin-oidc",
    "http://localhost:5002/signin-oidc"],
    "SubjectId": "anonymous",
    "ResponseType": "code id_token",
    "ResponseMode": "form_post",
    "GrantType": "hybrid",
    "RequestedScopes": "openid profile default-api",
    "State": "CfDJ8DU4Xalc7d9HttaFlZ-UaDhGsjeeEccTfNiNZFz3yYZI9MfXjrXo2TAzT9f6-F2VEdC7bWtcD7HRJgkqrh4t0oTAe_47IBfcm5Fsde9bVRorq-CHcL6_c15Vz1G5LJyEzqX6tyjhcZ2g3J2JjxD1PME1W7sq9YSddhQUJmxt4bVi70wdTtXXp0tH0SKyb0vLCs3eIjOln792nobaFOCM7r3VJ8BfXfpDm2pOOmBlR7zCCBxFCivwj7Zmy5Tu8Z09MvzOaLEkPBSL5i9GyxmGiB0P6osBPYEDyoRfgy2qDigH3QqLmLYjfE6NrgcgIGO9kgXuUT52XgALV_ZKjNbih-Y",
    "Nonce": "636702233595840569.NGQ3NGVlODMtYTVhNy00MjM4LWFhNGQtNTFiZTE3ZjllZmUzNjU5MGNmNjktNjg3Yy00YmZlLWEwYWYtYmMzM2QxZmZlNjBk",
    "Raw": {
        "client_id": "demo",
        "redirect_uri": "http://localhost:5002/signin-oidc",
        "response_type": "code id_token",
        "scope": "openid profile default-api",
        "response_mode": "form_post",
        "nonce": "636702233595840569.NGQ3NGVlODMtYTVhNy00MjM4LWFhNGQtNTFiZTE3ZjllZmUzNjU5MGNmNjktNjg3Yy00YmZlLWEwYWYtYmMzM2QxZmZlNjBk",
        "state": "CfDJ8DU4Xalc7d9HttaFlZ-UaDhGsjeeEccTfNiNZFz3yYZI9MfXjrXo2TAzT9f6-F2VEdC7bWtcD7HRJgkqrh4t0oTAe_47IBfcm5Fsde9bVRorq-CHcL6_c15Vz1G5LJyEzqX6tyjhcZ2g3J2JjxD1PME1W7sq9YSddhQUJmxt4bVi70wdTtXXp0tH0SKyb0vLCs3eIjOln792nobaFOCM7r3VJ8BfXfpDm2pOOmBlR7zCCBxFCivwj7Zmy5Tu8Z09MvzOaLEkPBSL5i9GyxmGiB0P6osBPYEDyoRfgy2qDigH3QqLmLYjfE6NrgcgIGO9kgXuUT52XgALV_ZKjNbih-Y",
        "x-client-SKU": "ID_NET",
        "x-client-ver": "2.1.4.0",
        "accessToken": "4155a526-2bb1-4d88-ba3a-21cb3a91f266",
        "userId": "MQ=="
    }
    

    }

  3. 显示登录名:用户未通过身份验证


我不清楚导致身份验证失败的原因是什么,]

c# asp.net-core oauth-2.0 openid identityserver4
1个回答
1
投票

您是否正在使用Google Chrome并通过HTTP服务身份服务器?如果是这样,请继续阅读

有点背景,

Cookie是服务器在response上发送的一点信息,浏览器在每个子请求上都发送回。

[当您在Identityserver上登录时,它将发送回一个cookie来标识您的会话,该cookie的属性为SameSite=none,因此可以(并且将)根据任何第三方应用程序向您的请求发送的cookie进行发送。身份服务器。 (这样,在第三方应用程序上开始的下一个授权呼叫包括cookie,您可以跳过登录)

您在使用Google Chrome吗?

Google Chrome浏览器最近进行了一项更改,其中发布的所有带有属性SameSite=none的Cookie都必须包含Secure属性。

这两个属性表示:

    Samesite:控制是否仅去往相同来源(去往相同域上的api)的请求将包含此cookie。这是防止CSRF的方法。
  • [Secure:控制是否仅对http端点的请求将包含此cookie。
  • 这意味着如果您在chrome上使用Identityserver quickstart,它将无法登录,因为在您将用户名和密码发布到服务器后,响应将包含会话cookie,但您的浏览器(chrome)将拒绝它们因为没有将它们标记为secure(因为您使用的是HTTP),而是标记为SameSite=none,并且不允许使用此组合。
  • © www.soinside.com 2019 - 2024. All rights reserved.