这个问题没有真正的解决方案,只有各种解决方法,直到 net7 出现。在 net7 中,我们应该再次能够根据https://github.com/dotnet/aspnetcore/pull/43954在一次调用中从多个源请求范围
我有一个 .net5 blazor web assembly 应用程序,使用 msal auth for azure 设置。
services.AddMsalAuthentication(options =>
{
configuration.Bind("AzureAd", options.ProviderOptions.Authentication);
options.ProviderOptions.DefaultAccessTokenScopes.Add("api://xxxxx/API.Access"); // API
options.ProviderOptions.Cache.CacheLocation = "localStorage";
});
Run Code Online (Sandbox Code Playgroud)
这很好用。
此外,我需要访问 Microsoft graph。我已经使用 graph sdk 完成了此操作,并为 graph sdk 提供了身份验证处理程序
public class GraphAuthenticationProvider : IAuthenticationProvider
{
private readonly NavigationManager _navigationManager;
public GraphAuthenticationProvider(IAccessTokenProvider tokenProvider, NavigationManager navigationManager)
{
TokenProvider = tokenProvider;
_navigationManager = navigationManager;
}
public IAccessTokenProvider TokenProvider { get; }
public async Task AuthenticateRequestAsync(HttpRequestMessage request)
{
string[] scopes = new[] { "https://graph.microsoft.com/Mail.ReadWrite", …Run Code Online (Sandbox Code Playgroud)