我在 AAD 中注册了一个应用,并在获得管理员同意的情况下提供了 Directory.AccessAsUser.All
委派权限。到目前为止,我仅使用应用程序权限。
我是这样进行身份验证的:
public async Task AuthenticateRequestAsync(HttpRequestMessage request)
{
var clientApplication = ConfidentialClientApplicationBuilder.Create(ClientId)
.WithClientSecret(ClientSecret)
.WithTenantId(TenantId)
.Build();
var result = await clientApplication.AcquireTokenForClient(this.AppScopes).ExecuteAsync();
request.Headers.Add("Authorization", result.CreateAuthorizationHeader());
}
之后我就调用了所需的端点。现在我的目标是在工作流程期间删除 AAD 设备,并且应用程序在后台运行,无需任何用户交互。是否可以在没有任何用户交互的情况下以某种方式进行授权并获取应用程序使用的 token ?
最佳答案
Microsoft Graph 公开两种权限:应用程序权限和委派权限。对于使用登录用户运行的应用程序,您可以在范围参数中请求委派权限。这些权限将登录用户的权限委托(delegate)给你的应用,使其在调用 Microsoft Graph 时充当登录用户。这些需要用户事件,并且 token 将同时具有应用程序和用户声明。
在没有用户交互的情况下,您无法使用委派方案。 目前删除设备场景仅支持委托(delegate)权限。检查here供你引用。 我的猜测是因为删除设备被认为是更复杂的操作(而不是读取)。
话虽这么说,如果您希望为此支持应用程序权限,请提出 user voice针对您的具体要求,解释您的场景,以便将来可以考虑实现。
谢谢。
关于c# - 如何获取委派权限的 token (microsoft graph),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71557264/