【问题标题】:How to create Azure AD user programmatically?如何以编程方式创建 Azure AD 用户?
【发布时间】:2017-11-29 02:49:52
【问题描述】:

我知道有 azure 门户来管理组、用户等。

有没有办法以编程方式(在 C# 中使用 web-api 或 sdk)?

提前致谢。

【问题讨论】:

    标签: c# azure azure-active-directory


    【解决方案1】:

    使用 C# 和 Fei Xue 提到的 Graph API 库,您可以编写如下代码:

    User newUser = new User
    {
        Id = user.Id,
        BusinessPhones = someUser.BusinessPhones,
        DisplayName = someUser.DisplayName,
        GivenName = someUser.GivenName,
        JobTitle = someUser.JobTitle,
        Mail = someUser.Mail,
        MobilePhone = someUser.MobilePhone,
        OfficeLocation = someUser.OfficeLocation,
        PreferredLanguage = someUser.PreferredLanguage,
        Surname = someUser.Surname,
        UserPrincipalName = someUser.UserPrincipalName
    };
    User createdUser = await graphClient.Users.Request().AddAsync(newUser);
    

    User 是 Graph 包提供的一个类。 graphClient 对象是一个提供连接和认证信息的 GraphServiceClient 对象。

    此外,还支持一组核心用户信息。您可以在用户文档中对 Create User 示例的响应中看到它们。文档中还为用户列出了其他属性,但这些属性“属于”SharePoint、Office 365 等应用程序,如果没有该应用程序的许可,则无法使用。

    请注意,文档很少,因此有时需要反复试验才能使某些东西发挥作用。

    我一直在使用Graph Snippets example 来获得这方面的经验。它有很多使用示例。另一个很棒的资源是 Graph Explorer,它可以让您实时尝试。

    如果您遇到问题,我被告知 Azure 和 Graph 开发人员会监控 SO 并快速响应问题。这是我迄今为止的经验。

    祝你好运!

    【讨论】:

      【解决方案2】:

      使用 Microsoft Graph REST 创建 Azure AD 用户很容易。这是一个代码示例供您参考:

      POST https://graph.microsoft.com/v1.0/users 
      Authorization: Bearer {token}
      Content-type: application/json
      
      {
        "accountEnabled": true,
        "displayName": "displayName-value",
        "mailNickname": "mailNickname-value",
        "userPrincipalName": "upn-value@tenant-value.onmicrosoft.com",
        "passwordProfile" : {
          "forceChangePasswordNextSignIn": true,
          "password": "password-value"
        }
      }
      

      它还使用来自here 的C# 提供了相应的库。有关 Microsoft Graph 的更多详细信息,您可以参考以下链接:

      Overview of Microsoft Graph

      Get access tokens to call Microsoft Graph

      Create User

      【讨论】:

      • 我正在开发一个 Web 应用程序并在后端使用 dotnet core webapi。我有一个 UsersController,并希望使用该控制器上的端点来获取有关我在 AzureAD 中的用户的信息。端点是 /api/users?id={id} 如何将请求重定向到 https://graph.microsoft.com/v1.0/users ? Authorization: Bearer {token}中的token是当前登录用户的token吗?还是我的应用程序更通用的令牌?我的 Web 应用程序也托管在 Azure 中。我需要添加 Microsoft Graph 吗?
      • 如果只想获取当前用户登录的具体用户信息,可以获取用户的委托令牌。你是什​​么意思重定向请求?获取当前用户的用户信息,可以参考active-directory-dotnet-graphapi-web
      • 如果我需要在用户管理的上下文中管理多个组和用户,并且我想为此创建一个 Web 应用程序,我想要一个可以登录的委派管理员类型用户/组申请和管理。普通用户只能登录并查看他们的个人资料,并可能更新他们的密码。我应该使用服务主体(不完全熟悉这个概念)还是为这些管理员用户分配全局管理员权限?这样做的目的是在另一个依赖此租户获取 oauth2 令牌的应用程序中进行用户身份验证。
      • @kanpeki 如果有意义的话,Bearer 令牌应该是尝试添加新用户的用户的令牌。
      • 我还可以在 Azure AD B2C 中使用 Microsoft Graph REST 吗?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-06-03
      • 1970-01-01
      • 2019-10-17
      • 2018-02-09
      • 2023-02-22
      • 2019-10-16
      • 2011-07-30
      相关资源
      最近更新 更多