Microsoft Graph API を利用した Azure AD B2C のユーザー操作(更新編)


Microsoft Azure 上でクラウドネイティブなシステムを作る際は、ユーザー情報管理や認証処理を Azure AD B2C を利用して実現することが一般的です。
本記事では、Microsoft Graph API を利用して Azure AD B2C 上のユーザー情報を作成、更新、削除する方法を紹介します。

前提条件

pom.xml

作成編を参考にしてください。

Azure AD B2C ユーザーの ObjectId を確認する

Azure AD B2C ユーザーの更新は、対象ユーザーの ObjectId が必要になります。
ObjectId は、ユーザーのプロファイル画面から確認できます。

Azure AD B2C ユーザーの更新

TestGraphApi.java
   @Test
    void updateUser() {

        /**
         * ユーザーインスタンスの作成
         */
        User user = new User();


        /**
         * ユーザー属性の設定
         */
        user.displayName = DISPLAY_NAME_FOR_UPDATE;
        ObjectIdentity objectIdentity = new ObjectIdentity();
        objectIdentity.signInType = "username";
        objectIdentity.issuer = ISSUER;
        objectIdentity.issuerAssignedId = ISSUER_ASSIGNED_ID_FOR_UPDATE;
        List<ObjectIdentity> identities = new ArrayList();
        identities.add(objectIdentity);
        user.identities = identities;

        /**
         * Azure AD B2C 上のユーザーを更新
         */
        createIGraphServiceClient(
                CLIENT_ID,
                CLIENT_SECRET,
                DOMAIN_NAME).users(OBJECT_ID_FOR_UPDATE) 
                .buildRequest().patch(user);  //  (*1)(*2)

    }

(*1) IGraphServiceClient オブジェクトの users メソッドの引数は、更新対象ユーザーの ObjectId になります。
(*2) ユーザー作成時は post メソッドでしたが、ユーザー更新時は、patch メソッドになります。

サインインタイプについて

作成編で、サインインのタイプを選択できるとお伝えしました。
objectIdentity.issuerAssignedId で設定した値は、サインイン時にアカウント名として利用されます。サインインのタイプによって、指定できる値が異なります。

  • ユーザー名認証
    • テナント内でユニークな文字列
  • メールアドレス認証
    • テナント内でユニークな文字列
    • {文字列} @ {Active Directoryのドメイン} の形式 (*1)
  • フェデレーション連携認証
    • テナント内でユニークな文字列
    • @ マークを含むメールアドレスとして正しい形式

(*1) Active Directory のドメインは、カスタム ドメインを追加していない場合、{テナント名}.onmicrosoft.com のみになります。他のドメインのユーザーを設定したい場合は、Active Directory B2C のカスタム ドメインを有効にしてください。

実行結果

上記を実行すると、Azure AD B2C 上に指定した属性のユーザーが更新されていることが確認できます。

次回は、ユーザー情報の削除方法について記述します。
読んで頂きありがとうございました。

検証コード

Graph API リファレンス