gpt4 book ai didi

c# - 如何使用 Fluent API 创建 Azure AD 应用程序?

转载 作者:太空宇宙 更新时间:2023-11-03 12:25:06 25 4
gpt4 key购买 nike

我正在使用以下代码尝试以编程方式在 Azure Active Directory 中注册应用程序:

        var application = azure.ActiveDirectoryApplications.Define(applicationName)
.WithSignOnUrl(url)
.WithIdentifierUrl(url)
.WithAvailableToOtherTenants(false)
.DefinePasswordCredential(id)
.WithPasswordValue(secret)
.Attach()
.Create();

其中 azureMicrosoft.Azure.Management.Fluent.Azure 的实例。

当我运行上述命令来创建 Azure Active Directory 应用程序时,会引发 Microsoft.Azure.Management.Fluent.Azure 异常,并显示消息操作返回无效状态代码“禁止” '。创建其他 Azure 资源(例如资源组和应用服务)效果很好。

查看异常详细信息,我可以看到向以下端点发出了请求:

https://graph.windows.net/{myTenantId}/applications?api-version=1.6

以下内容位于响应正文中:

{"odata.error":{"code":"Authorization_RequestDenied","message":{"lang":"en","value":"Insufficient privileges to complete the operation."}}}

由于机构显示“权限不足,无法完成操作”,这似乎是一个简单的权限问题,但我已为 Microsoft.Azure.ActiveDirectory API 授予以下权限(以全局管理员身份登录)运行代码的应用程序:

  • 以登录用户身份访问目录
  • 读取和写入目录数据

这些特权还不够吗?我缺少什么?正如我所说,使用 Fluent API 创建其他资源效果很好。

最佳答案

Directory.AccessAsUser.AllDirectory.ReadWrite.All User.Read 范围足以在 Azure Active Directory 中创建应用程序。由于您没有提供如何构造 azure 实例,因此我将提供一个工作代码示例:

static void Main(string[] args)
{
var url = "http://adfei.onmicrosoft.com/appFluent";
var id = "abc";
var secret = "secret";
var applicationName = "appFluent";
var credFile = new AzureCredentials(new UserLoginInformation
{
ClientId = "{appId of native application}",
UserName = "{userName}",
Password = "{password}"
},
"adfei.onmicrosoft.com", AzureEnvironment.AzureGlobalCloud);
IAzure azure = Azure.Authenticate(credFile).WithDefaultSubscription();
var application = azure.ActiveDirectoryApplications.Define(applicationName)
.WithSignOnUrl(url)
.WithIdentifierUrl(url)
.WithAvailableToOtherTenants(false)
.DefinePasswordCredential(id)
.WithPasswordValue(secret)
.Attach()
.Create();

Console.Read();
}

并且请确保访问 token 中包含范围,以确保您拥有此操作的权限。您可以通过 Fiddler 捕获请求来检查 token 并解码 this site 中的 token 。检查访问 token 中的 scp 声明。

关于c# - 如何使用 Fluent API 创建 Azure AD 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45392618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com