Forguncy 10 オンラインヘルプ
アプリの拡張 / コーディングによるカスタマイズ / ユーザーアカウント管理 REST API
このトピックで
    ユーザーアカウント管理 REST API
    このトピックで

    ユーザーアカウント管理REST APIは、Forguncyのユーザー管理サービスに対して、新しいユーザーを作成する、作成したユーザーをロールに追加するといったすべてのユーザー管理に必要な操作をREST APIで提供します。

    フォーム認証のユーザーとWindows認証のユーザーで使用するAPIが異なる場合があります。また、SAML 2.0用認証プロバイダー、およびOffice 365(Microsoft Entra ID)用認証プロバイダーのユーザーはフォーム認証のユーザーとして作成します。

    APIのバージョンと構成

    ユーザーアカウント管理REST APIには、Forguncy v8以前から提供されているv1とForguncy v10から追加されたv2があり、URLのパスが異なります。

    バージョン

    URLのパス

    v1

    /UserService/Manager/User/ 配下のAPI

    v2

    /UserService/Manager/User/V2/ 配下のAPI

    v2のAPIにはv1のAPIを再実装したものがいくつか存在し、これらはForguncyの新しいバージョンの機能に則したものになっていますので、後継のあるAPIはv2を使用することを推奨します。v1のAPIも引き続き利用可能です。

    v1とv2のAPIの構成はリファレンスヘルプの「User Service API(ユーザーアカウント管理 REST API)一覧」を参照してください。

    ユーザーアカウント管理 REST APIの呼び出し

    本REST APIはForguncy Serverがインストールされているコンピューターからの呼び出しにおいてのみ動作します。

    外部アプリケーションからユーザー管理を行いたい場合には、OAuth2.0アクセストークンをAuthorization Headerに追加します。詳細については、セキュリティの「外部連携」部分を参照してください。

    注意:

    • Forguncy Server環境の場合、APIリファレンスにおける「Origin」は、通常http://localhost:22345」、または「https://localhost:22345」となります(「localhost」部分は「127.0.0.1」でも同様です)。サーバーのコンピューター名を使用する場合、「localhost」部分をコンピューター名(ホスト名)で置き換えてください。

    • Forguncy Builder環境でのデバッグの場合、Origin部分が「http://localhost:<開発時ユーザーアカウント管理のポート番号>」となるだけでなく、「/UserService」部分が「/Forguncy」に変更される点に注意してください。

      • Forguncy Server環境:http://localhost:22345/UserService/Manager/User/AddUsers

      • Forguncy Builder環境でのデバッグ:http://localhost:<開発時ユーザーアカウント管理のポート番号>/Forguncy/Manager/User/AddUsers

      上記のようなトラブルを防ぐためにも、Origin部分はユーザーアカウント管理のベースURL取得コマンドを使用して取得することをおすすめします。

    • リクエスト本文にJSONデータを指定するリクエストの場合は、Content-Typeヘッダーに「application/json」を指定する必要があります。

    使用例

    次のコードは、「Bob」と「Andy」の2人のユーザーを作成、「Group1」という組織を作成し、その組織に作成したユーザー2人を追加するC#のサンプルコードです。

    C#
    コードのコピー
    public static async Task<ResultDataBase> MoveRoleOrFolderV2Async(int sourceRoleOrFolderId, bool sourceIsRole, int targetRoleOrFolderId, bool targetIsRole, int moveType)
    {
        HttpClient httpClient = HttpClientFactory.Create();
        var jsonContent = JsonContent.Create(new
        {
            DragNodeId = sourceRoleOrFolderId,
            IsDraggedRole = sourceIsRole,
            DropNodeId = targetRoleOrFolderId,
            IsDroppedRole = targetIsRole,
            MoveType = moveType
        });
        var response = await httpClient.PostAsync("http://localhost:32356/Forguncy/Manager/Role/V2/MoveRoleOrFolder", jsonContent);
        response.EnsureSuccessStatusCode();
        var resultString = await response.Content.ReadAsStringAsync();
        return JsonConvert.DeserializeObject<ResultDataBase>(resultString);
    }
                            
    public static async Task<ResultDataBase> AddOrganizationV2Async(int organizationLevelId, string departmentName)
    {
        HttpClient httpClient = HttpClientFactory.Create();
        var jsonContent = JsonContent.Create(new
        {
            OrganizationName = departmentName,
            OrganizationId = organizationLevelId
        });
        var response = await httpClient.PostAsync("http://localhost:32356/Forguncy/Manager/Organization/V2/AddOrganization", jsonContent);
        response.EnsureSuccessStatusCode();
        var resultString = await response.Content.ReadAsStringAsync();
        return JsonConvert.DeserializeObject<ResultDataBase>(resultString);
    }
                            
    public static async Task<ResultDataBase> SetUsersForOrganizationsV2Async(int organizationId, string userName)
    {
        HttpClient httpClient = HttpClientFactory.Create();
        var jsonContent = JsonContent.Create(new
        {
            OrganizationIds = new int[] { organizationId },
            UserNames = new string[] { userName }
        });
        var response = await httpClient.PostAsync("http://localhost:32356/Forguncy/Manager/Organization/V2/SetUsersForOrganizations", jsonContent);
        response.EnsureSuccessStatusCode();
        var resultString = await response.Content.ReadAsStringAsync();
        return JsonConvert.DeserializeObject<ResultDataBase>(resultString);
    }
                            
    public static async Task<ResultDataBase> MoveOrganizationV2Async(int sourceOrganizationId, int targetOrganizationId, int moveType)
    {
        HttpClient httpClient = HttpClientFactory.Create();
        var jsonContent = JsonContent.Create(new
        {
            OrganizationId = sourceOrganizationId,
            TargetOrganizationId = targetOrganizationId,
            MoveType = moveType
        });
        var response = await httpClient.PostAsync("http://localhost:32356/Forguncy/Manager/Organization/V2/MoveOrganization", jsonContent);
        response.EnsureSuccessStatusCode();
        var resultString = await response.Content.ReadAsStringAsync();
        return JsonConvert.DeserializeObject<ResultDataBase>(resultString);
    }

    SAML 2.0用認証プロバイダーおよびOffice 365(Microsoft Entra ID)用認証プロバイダーのユーザー作成

    SAML 2.0用認証プロバイダー、およびOffice 365(Microsoft Entra ID)用認証プロバイダーのユーザーを作成したい場合、フォーム認証のユーザーとして作成しますが、ユーザー名をプロバイダーの該当する項目と一致させる必要があります。

    プロパティ オプション SAML 2.0 Office 365(Microsoft Entra ID)
    ユーザー名 必須 SAML_SUBJECTにマップされている項目 オブジェクト ID
    氏名 省略可 ユーザー名 表示名
    パスワード 必須 任意のパスワード
    ※ 本パスワードはSAML IdP側のパスワードとは無関係であることに注意してください。作成したユーザーがフォーム認証でログインする際にはこのパスワードが要求されます。
    任意のパスワード
    ※ 本パスワードはMicrosoft Entra ID側のパスワードとは無関係であることに注意してください。作成したユーザーがフォーム認証でログインする際にはこのパスワードが要求されます。
    メールアドレス 必須 メールアドレス メール