我有一个类似微软默认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解决方案中的客户端定义,
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
}下面是我用来引用身份服务器的一段代码,
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:信息:令牌请求验证成功,
{
"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内部服务器错误,并创建了日志。
发布于 2021-04-05 16:11:20
如果您收到500错误,则问题不在于授权流程。否则就是401。
您需要检查真正的错误是什么。这可能是一个解析错误。由于服务器端错误,您无法简单地完成此过程。请分享更多信息,可能是日志,所以我会更新答案。
https://stackoverflow.com/questions/66903575
复制相似问题