Cir*_*ger 5 azure-active-directory .net-core webassembly blazor-client-side webapi
我已设法使默认模板正常工作(我的 blazor 独立 SPA 应该从不同的 ADApp - webAPI 获取多个范围的令牌;即使我定义了 extraScopes 或 defaultaccesstokenscopes,我也设法当时仅获取一个范围的令牌)。
builder.Services.AddMsalAuthentication(options =>
{
var config = options.ProviderOptions;
config.Authentication.Authority = "https://login.microsoftonline.com/tenantID";
config.Authentication.ClientId = "clientID";
options.ProviderOptions.DefaultAccessTokenScopes.Add("offline_access");
options.ProviderOptions.DefaultAccessTokenScopes.Add("https://graph.microsoft.com/user.read");
options.ProviderOptions.DefaultAccessTokenScopes.Add("https://tenant.crm.dynamics.com/user_impersonation");
options.ProviderOptions.DefaultAccessTokenScopes.Add("clientID/scope1");
// tried this too
// config.AdditionalScopesToConsent.Add("https://tenant.crm.dynamics.com/user_impersonation");
});
Run Code Online (Sandbox Code Playgroud)
现在有一个问题是如何获取其他令牌,因为如果提到多个范围,它只会获取“clientID”范围的令牌......?并在 HttpClient 请求中使用 wasm 页面中的那些令牌?
在 Angular 中(使用 MSAL),这一切都是自动完成的,您定义所需的范围,它就会获取所有令牌。然后它拦截所有请求,并按请求的域添加授权标头和相应的令牌。
这里是否有类似的机制,或者应该通过为每个请求添加相应的令牌并将 HttpRequestMessage 与 HttpClient.SendAsync() 一起使用来手动完成?
显然,对于业务应用程序来说,如果不接触某种受保护的 API(通常是同一 AAD 中的应用程序),就没有多大用处。例如,假设它可以是对 Dynamics CRM 的 webapi 的简单查询。
| 归档时间: |
|
| 查看次数: |
584 次 |
| 最近记录: |