【发布时间】:2020-04-28 22:04:59
【问题描述】:
我正在构建一个反应应用程序,使用 Auth0 作为我的 oauth 身份验证并使用 ASP.NET 核心 api 支持它。
从 React 中,我将用户重定向到 Auth0,我已经设置了一个单页应用程序应用程序。
登录成功后,它会使用代码将用户重定向回我的 React 应用程序。
然后我想将该代码转换为 JWT 令牌以授权访问后端 api,这就是失败的地方。
登录后,我使用 Auth0 提供的示例库并调用:
const { getTokenSilently } = useAuth0();
...
var token = await getTokenSilently();
...
axios({
url: `/api/Folder`,
method: 'GET',
headers: {
Authorization: `Bearer ${token}`
}
})
它确实提供了一个令牌,但这个令牌对于 JWT 令牌来说似乎太小了,它在标题中看起来像这样:
Authorization: Bearer 7hExNvsOM14TpY0qUnPbVqpizwLLxynw
我的 C# asp.net core api 的响应是:
www-authenticate: Bearer error="invalid_token"
我的 C# 代码如下所示: 启动.cs
services.AddAuthentication(options =>
{
options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme;
options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;
}).AddJwtBearer(options =>
{
options.Authority = Configuration["Auth0:Authority"];
options.Audience = Configuration["Auth0:Audience"];
options.RequireHttpsMetadata = false;
options.TokenValidationParameters = new TokenValidationParameters
{
NameClaimType = ClaimTypes.NameIdentifier
};
});
IdentityModelEventSource.ShowPII = true; //for debug purposes
....
app.UseAuthentication();
app.UseAuthorization();
文件夹控制器.cs
[Authorize]
[Route("api/[controller]")]
[ApiController]
public class FolderController : ControllerBase
{
....
}
【问题讨论】:
标签: reactjs asp.net-core access-token auth0 bearer-token