簡體   English   中英

如何利用 Azure AD B2C 通過 REST API 創建和管理用戶?

[英]How can I leverage Azure AD B2C to create and manage users through a REST API?

我正在嘗試在微服務架構中創建一個應用程序。 我目前正在嘗試弄清楚身份驗證和授權部分。 我做了一些研究並選擇了 Azure AD B2C 作為身份提供者。

我現在想要的是一種通過 REST API 在我的 Azure AD B2C 中創建用戶的方法,我將向我的客戶端(Web 應用程序和移動客戶端)公開該 API。 我一直在探索 Azure AD B2C 文檔 ( https://docs.microsoft.com/en-us/azure/active-directory-b2c/ ),甚至 Azure AD B2C 接口,但所有我能夠找到的有關登錄和注冊的信息與允許用戶通過帶有公司品牌的可自定義頁面執行這些操作有關。

那不是我需要的。 我想在 API 網關后面公開幾個服務,並允許我的客戶端應用程序執行我的用戶的創建和管理。 我希望我的移動團隊能夠調用我的 API、注冊用戶、執行登錄並能夠訪問其他與業務相關的服務,而無需知道我是否在使用 Azure AD B2C。 但到目前為止,我找不到任何允許我這樣做的 Azure AD B2C API。 我可以使用 Microsoft Azure AD B2C 實現這一目標,還是應該開始尋找其他雲身份提供商?

如果要使用 Rest API 管理 Azure AD B2C 用戶,可以使用 Microsoft Graph API 來實現。 更多詳情請參考文檔文檔

例如

  • 注冊申請

    1. 登錄到 Azure 門戶。
    2. 在門戶工具欄中選擇目錄 + 訂閱圖標,然后選擇包含 Azure AD B2C 租戶的目錄。
    3. 在 Azure 門戶中,搜索並選擇Azure AD B2C
    4. 選擇應用程序注冊(預覽),然后選擇新注冊。
    5. 輸入應用程序的名稱。 例如,managementapp1。
    6. 僅選擇此組織目錄中的帳戶
    7. 權限下,清除授予管理員同意 openid 和 offline_access 權限復選框。
    8. 選擇注冊
    9. 記錄出現在應用程序概覽頁面上的應用程序(客戶端)ID 您可以在后面的步驟中使用此值。
  • 授予 API 權限

    1. 管理下,選擇API 權限
    2. 配置的權限下,選擇添加權限
    3. 選擇Microsoft API選項卡,然后選擇Microsoft Graph
    4. 選擇應用程序權限
    5. 展開適當的權限組並選中要授予管理應用程序的權限的復選框。 例如:Directory > Directory.ReadWrite.All:用於用戶遷移或用戶管理場景。
    6. 選擇添加權限 按照指示,在繼續下一步之前等待幾分鍾。
    7. 選擇授予管理員同意(您的租戶名稱)
    8. 選擇當前登錄的管理員帳戶,或使用 Azure AD B2C 租戶中至少分配有雲應用程序管理員角色的帳戶登錄。
    9. 選擇接受
    10. 選擇“刷新” ,然后驗證“已授予...”是否出現在“狀態”下。 傳播權限可能需要幾分鍾時間。
  • 創建客戶端密鑰

    1. 管理下,選擇證書和機密
    2. 選擇新客戶端機密
  • 獲取訪問令牌

POST https://login.microsoftonline.com/<your b2c tannat name >/oauth2/v2.0/token 

Content-Type: application/x-www-form-urlencoded

grant_type=client_credentials
&client_id=<your sp appId>
&client_secret=<you sp password>
&scope=https://graph.microsoft.com/.default
  • 創建用戶
POST https://graph.microsoft.com/v1.0/users
Content-type: application/json
Authorization: Bearer <access_token>

{

      "displayName": "[TEST] Bridgette Harmon (Local account)",
      "givenName": "Bridgette",
      "surname": "Harmon",
      "identities": [
        {
             "signInType": "userName",
             "issuer": "<your b2c tenant>",
            "issuerAssignedId": "Bridgette"
        }
      ],

      "passwordProfile" : {
          "password": "password-value",
          "forceChangePasswordNextSignIn": false
        }
    }

像您一樣,我正在尋找一種集中方式來保留我的用戶並從多個應用程序或 api 執行單點登錄。 從成本的角度來看,我現在傾向於開發自己的身份提供程序,而不是 Azure AD。 祝你好運。

為了放大@JimXu 的回答,以這個客戶端為例。

“這種方法類似於服務帳戶方案,其中應用程序作為自身運行,而不是作為通過交互式用戶登錄登錄的用戶。這是通過使用 OAuth 2.0客戶端憑據授權來完成的。”

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM