C# 在React Typescript web应用程序上使用Msal.js时,.net核心api调用的OAuth2身份验证失败

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 } }

我有一个需要与.net核心api通信的客户端Typescript React web应用程序。在客户端上集成了msal.js。我能够登录AAD,获取用户帐户和访问令牌,并将其作为承载器传递给api调用。但是,api级别的身份验证失败

在客户端:

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:签名验证失败

  • 问题出在哪里
  • 是否有任何示例显示如何从客户端应用程序将令牌传递到.net core api

  • 问题是令牌被赋予了这个作用域
    user.read
    ,这是一个图形API作用域

    因此,解决方案是在azure中注册服务器应用程序并创建一个

    然后在客户端应用程序上:

    
     request = {
            scopes: ["api://clientid/access_as_user"] 
         };