c# - 如何获取委派权限的 token (microsoft graph)

标签 c# azure-active-directory microsoft-graph-api access-token

我在 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/

相关文章:

c# - 日志记录如何影响 Quickfix 性能?

c# - 表达式树库忽略短路求值概念

c# - 具有运行时映射配置的自动映射器

azure - 我可以将 Azure 应用程序类型从 "Web app/API"更改为 "Native"吗?

c# - 如何以编程方式创建 Azure AD 用户?

angular - msal.js angular 6 SPA 回调和错误处理

azure - 仅允许以编程方式将文件上传到 SharePoint Online

c# - 为什么我不应该实现 IObservable<T>?

microsoft-graph-api - 如何获取 Microsoft graph 中共享日历的列表?

microsoft-graph-api - 搜索我的 onedrive 在 ms 图中返回 invalidRequest