C# 在React Typescript web应用程序上使用Msal.js时,.net核心api调用的OAuth2身份验证失败
我有一个需要与.net核心api通信的客户端Typescript React web应用程序。在客户端上集成了msal.js。我能够登录AAD,获取用户帐户和访问令牌,并将其作为承载器传递给api调用。但是,api级别的身份验证失败 在客户端:C# 在React Typescript web应用程序上使用Msal.js时,.net核心api调用的OAuth2身份验证失败,c#,typescript,oauth-2.0,azure-active-directory,msal,C#,Typescript,Oauth 2.0,Azure Active Directory,Msal,我有一个需要与.net核心api通信的客户端Typescript React web应用程序。在客户端上集成了msal.js。我能够登录AAD,获取用户帐户和访问令牌,并将其作为承载器传递给api调用。但是,api级别的身份验证失败 在客户端: config:Msal.Configuration=buildConfiguration({auth:{ clientId:'clientId', 权威:“权威”, 验证权限:正确, navigateToLoginRequestUrl:false } }
config:Msal.Configuration=buildConfiguration({auth:{
clientId:'clientId',
权威:“权威”,
验证权限:正确,
navigateToLoginRequestUrl:false
} });
请求={
作用域:[“user.read”]
};
userAgentApp:Msal.UserAgentApplication=新的Msal.UserAgentApplication(this.config);
private _accessToken:string='';
公共异步GetAccessToken():承诺{
如果(此._accessToken=='')
{
等待this.userAgentApp.acquireTokenSilent(this.request)
。然后((tokenResponse)=>this.\u accessToken=tokenResponse.accessToken)
.catch((错误)=>console.log(错误))
}
返回此。\u accessToken;
}
公共登录(){
console.log(“登录前”);
this.userAgentApp.HandlerRedirectCallback((错误,响应)=>
{
控制台错误(错误)
});
this.userAgentApp.loginDirect(this.request);
console.log(“登录后”)
}
//调用api
axios.defaults.headers.common={'Authorization':'Bearer${accessToken}}}
const travelExpensesResponse=等待axios.get(“https://localhost:44350/api/reisekostenantrag")
在Api上
// Start.cs ConfigureServices
services.AddAuthentication(sharedOptions =>
{
sharedOptions.DefaultScheme = JwtBearerDefaults.AuthenticationScheme;
})
.AddJwtBearer(options =>
{
options.Audience = "clientId";
options.Authority = "authority";
});
我正在获取SecurityTokenInvalidSignatureException:IDX10511:签名验证失败
问题是令牌被赋予了这个作用域
user.read
,这是一个图形API作用域
因此,解决方案是在azure中注册服务器应用程序并创建一个
然后在客户端应用程序上:
request = {
scopes: ["api://clientid/access_as_user"]
};