首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >无法验证dotntecore web中的身份服务器令牌

无法验证dotntecore web中的身份服务器令牌
EN

Stack Overflow用户
提问于 2021-04-01 19:19:52
回答 1查看 158关注 0票数 1

我有一个类似微软默认Asp.netCoreWebApplication->ASP.netCoreWithReact.js.模板的应用程序

在这个react中,客户端将被包装在a.netcore项目中。所有的UI页面都将由React提供。.Net核心后端将仅用于API。

现在,我已经实现了IdentityServer4,并且能够在这个端点http://localhost:60739/token生成令牌

从react客户端,单击登录按钮,我可以对http://localhost:60739/token进行API调用,并可以使用granttype密码流生成令牌。但我无法使用该令牌验证授权我的api端点

下面是我在identity server解决方案中的客户端定义,

代码语言:javascript
复制
  new Client
           {
             ClientName = "Resource Owner Flow",
             ClientId = "resource_owner_flow",
             AllowedGrantTypes = GrantTypes.ResourceOwnerPassword,
             ClientSecrets =
             {
               new Secret("resource_owner_flow_secret".Sha256())
             },
             AllowedScopes =
             {
               IdentityServerConstants.StandardScopes.OpenId,
               IdentityServerConstants.StandardScopes.OfflineAccess
             },
             AllowOfflineAccess = true,
             RefreshTokenUsage = TokenUsage.ReUse,
             //AccessTokenLifetime = 60,
             RefreshTokenExpiration = TokenExpiration.Absolute,
             AbsoluteRefreshTokenLifetime = 300
           }

下面是我用来引用身份服务器的一段代码,

代码语言:javascript
复制
 services.AddAuthentication("Bearer")
        .AddJwtBearer("Bearer", options =>
        {
            options.Authority = "http://localhost:60739";
            options.TokenValidationParameters.ValidateAudience = false;
            options.TokenValidationParameters.ValidateIssuer = false;
            options.TokenValidationParameters.ValidateIssuerSigningKey = false;
            options.TokenValidationParameters.ValidateLifetime = false;
            options.TokenValidationParameters.ValidateTokenReplay = false;
            options.IncludeErrorDetails = true;
        });

我无法成功访问受保护的api资源?有什么想法吗?

如果我在报头中使用令牌调用http://localhost:57102/api/Home/GetSomeProtectedData,我会得到500内部服务器错误。如果我删除了受保护资源上的authorize属性,它可以正常工作。

下面是邮递员截图,

下面是创建令牌的日志,

IdentityServer4.Validation.TokenRequestValidator:信息:令牌请求验证成功,

代码语言:javascript
复制
 {
   "ClientId": "resource_owner",
   "ClientName": "Resource Owner",
   "GrantType": "password",
   "Scopes": "openid",
   "AuthorizationCode": "********",
   "RefreshToken": "********",
   "UserName": "superadmin@gmail.com",
   "Raw": {
      "username": "superadmin@gmail.com",
      "password": "***REDACTED***",
      "grant_type": "password",
      "scope": "openid",
      "response_type": "token"
   }

}

但是,当我请求报头中包含令牌的受保护API资源时,我得到了500内部服务器错误,并创建了日志。

EN

回答 1

Stack Overflow用户

发布于 2021-04-05 16:11:20

如果您收到500错误,则问题不在于授权流程。否则就是401。

您需要检查真正的错误是什么。这可能是一个解析错误。由于服务器端错误,您无法简单地完成此过程。请分享更多信息,可能是日志,所以我会更新答案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66903575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档