本記事でご紹介するBakuraku (Custom)コネクタは、API Communication (JSON)の編集に対応しており、バクラク側で詳細な権限設定を実施されている場合や、プロビジョニング時に既存の設定を上書きしたくない場合にご活用いただけます。
本記事では、OneLogin から バクラク へ特定のパラメータのみをSCIM ユーザープロビジョニングする手順をご案内します。
目次
前提条件
- OneLoginのライセンスプラン が Professional または旧ライセンスプラン Unlimited のいずれかであること
- OneLoginの Super User または Account Owner 権限を持つアカウントを所有していること
- バクラクで 管理者 の共通管理権限をお持ちであること
- バクラクで API連携機能 をご契約済みであること
注意事項
- バクラクへのユーザープロビジョニングには、バクラク側で有償オプションである API連携機能 を契約する必要があります。詳細はバクラクのメーカー様・ベンダー様までお問い合わせください
- バクラクの仕様上、アカウントの削除は行われません。そのためOneLogin でユーザーを削除した場合でも、バクラクではアカウントは削除されず、無効化のみが実施されます
ユーザープロビジョニングの設定
1. バクラク側の設定
- バクラクに管理者の共通管理権限をもつユーザーでログインします
- 設定 > API管理 を選択します
- [新規作成]をクリックします
- 任意のキーの名称を入力します
例)OneLogin
- スコープの共通管理 > ユーザー の 読み取り と 書き込み を有効化します
- 下にスクロールし、[保存]をクリックします
-
APIキー をクリップボードへコピーします
- [閉じる]をクリックします
2. OneLogin側の設定
- OneLoginに管理者でログインし、[管理]をクリックします
-
Applications メニューから[Applications]を選択します
- [Add App]をクリックします
-
Bakuraku (Custom) と検索し、該当コネクタを選択します
- [Save]をクリックします
-
Configuration タブに移動し、Target System Secret に バクラク側の設定 手順7 で取得した APIキー を貼り付けます
- API Connection >[Enable]をクリックします
-
API Status が Enabled になることを確認します
-
Access タブに移動し、割り当てたいユーザーが属するロールを選択します
-
Provisioning タブに移動し、Enable provisioning にチェックを入れ、[Save]をクリックします
3. バクラク 各サービスの利用・権限設定
-
下記の表より、バクラクのテナント内で利用しているサービスのAPI名を確認します
バクラク利用中サービスAPIのパラメータ名共通管理 roleId:共通管理権限 申請・経費精算 enableWorkflow:申請・経費精算 利用可否
roleWorkflow:申請・経費精算 権限
enableWorkflowApprover:ワークフローで承認可能 設定債務管理 enableInvoice:債務管理 利用可否
roleInvoice:債務管理 権限債権管理 enableArmanagement:債権管理 利用可否
roleArmanagement:債権管理 権限請求書発行 enableDocIssue:請求書発行 利用可否
roleDocIssue:請求書発行 権限
roleDocissueClientDestinationPermission:請求書送付先権限*電子帳簿保存 enableBox:電子帳簿保存 利用可否
roleBox:電子帳簿保存 権限
roleBoxViewingPermission:電子帳簿保存 書類閲覧権限*
boxEnableConfirmDocument:電子帳簿保存 書類確認権限*
boxEnableLockDocument:電子帳簿保存 書類編集ロック権限*
boxEnableOcr:電子帳簿保存 AI-OCR実行権限勤怠 enableAttendance:勤怠 利用可否
roleAttendance:勤怠 権限ビジネスカード enableCard:ビジネスカード 利用可否
roleCard:ビジネスカード 権限※ * がついている権限はバクラクの有料プランが必要です。
-
Parametersタブに移動します
-
roleId を選択します
-
下記の対応表を参照し、付与する「共通管理権限」に対応する Value を選択します
* roleIdを設定せずにプロビジョニングを行った場合、新規/既存ユーザーが一般ユーザーとしてプロビジョニングされますのでご注意くださいValue共通管理権限ACCOUNTANT 経理担当 SYSTEM_ADMIN 管理者 USER 一般 USER_ADMIN ユーザー管理者
-
Include in User Provisioning にチェックを入れ、[Save]をクリックします
- 次に、手順1で確認したAPI名のパラメータ名を任意で選択します
※ roleXXXとenableXXXが対応関係にあります
例)roleInvoice(enableInvoiceと対応)
- roleXXX のパラメータは、任意のValueに変更し、Include in User Provisioning を有効化します
例)roleInvoice
- [Save]をクリックします
- enableXXX のパラメータは、Valueを true に変更し、Include in User Provisioning を有効化します
例)enableInvoice
- [Save]をクリックします
-
手順1で確認した残りのAPIのパラメータ名についても、同様に任意で設定します
例)roleArmanagement
例)enableArmanagement
- [Save]をクリックします
4. API Communication (JSON)のカスタマイズ
本章では、API Communication (JSON)を編集し、特定の権限をプロビジョニングするための手順をご説明します。プロビジョニングを実行する権限のパラメータのみをJSONに記述することで、意図しない権限の上書きを回避することができます。
本章では、共通管理権限、債務管理権限および債権管理権限をプロビジョニングする場合を例に挙げて説明します。
-
Configurationタブに移動し、API Communication (JSON) を確認します
-
API Communication (JSON) はデフォルトで以下のように設定されています
{ "create": [ { "name": "Create_User_Bakuraku", "description": "Task to create users in the Target Bakuraku Tenant", "body": { "users": [ { "role": { "roleId": "{$parameters.roleId}" }, "sendInvitation": true, "activationStatus": "ACTIVATED", "email": "{$parameters.email}", "name": "{$parameters.username}", "employeeCode": "{$parameters.employeeCode}" } ] }, "method": "post", "path": "rest/v1/id/users/bulk_import", "responses": { "200": { "extract": { "*by_path": "body.results.0.employeeCode" } } } } ], "update": [{ "body": { "users": [ { "role": { "roleAttendance": "{$parameters.roleAttendance}", "enableAttendance": {$parameters.enableAttendance}, "roleDocissueClientDestinationPermission": "{$parameters.roleDocissueClientDestinationPermission}", "roleDocIssue": "{$parameters.roleDocIssue}", "enableDocIssue": {$parameters.enableDocIssue}, "roleCard": "{$parameters.roleCard}", "enableCard": {$parameters.enableCard}, "boxEnableOcr": {$parameters.boxEnableOcr}, "boxEnableLockDocument": {$parameters.boxEnableLockDocument}, "boxEnableConfirmDocument": {$parameters.boxEnableConfirmDocument}, "roleBoxViewingPermission": "{$parameters.roleBoxViewingPermission}", "roleBox": "{$parameters.roleBox}", "enableBox": {$parameters.enableBox}, "enableWorkflowApprover": {$parameters.enableWorkflowApprover}, "roleWorkflow": "{$parameters.roleWorkflow}", "enableWorkflow": {$parameters.enableWorkflow}, "roleInvoice": "{$parameters.roleInvoice}", "enableInvoice": {$parameters.enableInvoice}, "roleArmanagement": "{$parameters.roleArmanagement}", "enableArmanagement": {$parameters.enableArmanagement}, "roleId": "{$parameters.roleId}" }, "activationStatus": "ACTIVATED", "email": "{$parameters.email}", "name": "{$parameters.username}", "employeeCode": "{$parameters.employeeCode}", "tenantUserId": "{$login.provisioning_user_id}" } ] }, "method": "post", "path": "rest/v1/id/users/bulk_import", "responses": { "200": { "extract": { "*by_path": "body.results.0.employeeCode" } } } } ], "disable": [{ "body": { "users": [ { "activationStatus": "DEACTIVATED", "email": "{$parameters.email}", "name": "{$parameters.username}", "employeeCode": "{$parameters.employeeCode}" } ] }, "method": "post", "path": "rest/v1/id/users/bulk_import", "responses": { "200": { "extract": { "*by_path": "body.results.0.employeeCode" } } } } ], "enable": [ { "body": { "users": [ { "activationStatus": "ACTIVATED", "email": "{$parameters.email}", "name": "{$parameters.username}", "employeeCode": "{$parameters.employeeCode}" } ] }, "method": "post", "path": "rest/v1/id/users/bulk_import", "responses": { "200": { "extract": { "*by_path": "body.results.0.employeeCode" } } } } ], "delete": [{} ], "search": [ { "path": "rest/v1/id/users?email={$parameters.email}", "method": "get", "responses": { "200": {}, "validate": { "if": { "body.users.0.email": "{$parameters.email}" } }, "extract": { "*by_path": "body.users.0.tenantUserId", "user_id":{ "*by_path": "body.users.0.tenantUserId" } } } } ], "lookup": [ { "path": "rest/v1/id/users?email={$parameters.email}", "method": "get", "responses": { "200": {}, "extract": { "username": { "*by_path": "body.users.0.name" }, "email": { "*by_path": "body.users.0.email" }, "first_name": { "*by_path": "body.firstname", "*raw": "{$user.firstname}" }, "last_name": { "*by_path": "body.lastname", "*raw": "{$user.lastname}" }, "user_id": { "*by_path": "body.users.0.tenantUserId" }, "tenant_user_id":{ "*by_path": "body.users.0.tenantUserId" } } } } ], "headers": { "Accept": "application/json", "Content-Type": "application/json", "x-bakuraku-api-key": "{$parameters.secret1}" }, "base_url": "https://api.bakuraku.layerx.jp/", "skip_empty_body_properties": true }
-
update > body > users > role から、必要なパラメータ以外を削除します
例)更新するユーザーに共通管理権限、債務管理権限および債権管理権限のプロビジョニングを行う場合は、次の部分を削除します"roleAttendance": "{$parameters.roleAttendance}", "enableAttendance": {$parameters.enableAttendance}, "roleDocissueClientDestinationPermission": "{$parameters.roleDocissueClientDestinationPermission}", "roleDocIssue": "{$parameters.roleDocIssue}", "enableDocIssue": {$parameters.enableDocIssue}, "roleCard": "{$parameters.roleCard}", "enableCard": {$parameters.enableCard}, "boxEnableOcr": {$parameters.boxEnableOcr}, "boxEnableLockDocument": {$parameters.boxEnableLockDocument}, "boxEnableConfirmDocument": {$parameters.boxEnableConfirmDocument}, "roleBoxViewingPermission": "{$parameters.roleBoxViewingPermission}", "roleBox": "{$parameters.roleBox}", "enableBox": {$parameters.enableBox}, "enableWorkflowApprover": {$parameters.enableWorkflowApprover}, "roleWorkflow": "{$parameters.roleWorkflow}", "enableWorkflow": {$parameters.enableWorkflow},
【削除後】(略) "update": [{ "body": { "users": [ { "role": { "roleInvoice": "{$parameters.roleInvoice}", "enableInvoice": {$parameters.enableInvoice}, "roleArmanagement": "{$parameters.roleArmanagement}", "enableArmanagement": {$parameters.enableArmanagement}, "roleId": "{$parameters.roleId}" }, "activationStatus": "ACTIVATED", "email": "{$parameters.email}", "name": "{$parameters.username}", "employeeCode": "{$parameters.employeeCode}", "tenantUserId": "{$login.provisioning_user_id}" } ] }, "method": "post", "path": "rest/v1/id/users/bulk_import", "responses": { "200": { "extract": { "*by_path": "body.results.0.employeeCode" } } } } ], (略)【削除前】
(略) "update": [{ "body": { "users": [ { "role": { "roleAttendance": "{$parameters.roleAttendance}", "enableAttendance": {$parameters.enableAttendance}, "roleDocissueClientDestinationPermission": "{$parameters.roleDocissueClientDestinationPermission}", "roleDocIssue": "{$parameters.roleDocIssue}", "enableDocIssue": {$parameters.enableDocIssue}, "roleCard": "{$parameters.roleCard}", "enableCard": {$parameters.enableCard}, "boxEnableOcr": {$parameters.boxEnableOcr}, "boxEnableLockDocument": {$parameters.boxEnableLockDocument}, "boxEnableConfirmDocument": {$parameters.boxEnableConfirmDocument}, "roleBoxViewingPermission": "{$parameters.roleBoxViewingPermission}", "roleBox": "{$parameters.roleBox}", "enableBox": {$parameters.enableBox}, "enableWorkflowApprover": {$parameters.enableWorkflowApprover}, "roleWorkflow": "{$parameters.roleWorkflow}", "enableWorkflow": {$parameters.enableWorkflow}, "roleInvoice": "{$parameters.roleInvoice}", "enableInvoice": {$parameters.enableInvoice}, "roleArmanagement": "{$parameters.roleArmanagement}", "enableArmanagement": {$parameters.enableArmanagement}, "roleId": "{$parameters.roleId}" }, "activationStatus": "ACTIVATED", "email": "{$parameters.email}", "name": "{$parameters.username}", "employeeCode": "{$parameters.employeeCode}", "tenantUserId": "{$login.provisioning_user_id}" } ] }, "method": "post", "path": "rest/v1/id/users/bulk_import", "responses": { "200": { "extract": { "*by_path": "body.results.0.employeeCode" } } } } ], (略)
-
create > body > users > role から、必要なパラメータを追加します
例)新規作成するユーザーに共通管理権限、債務管理権限および債権管理権限をプロビジョニングを行う場合は、次の内容を追加します"roleInvoice": "{$parameters.roleInvoice}", "enableInvoice": {$parameters.enableInvoice}, "roleArmanagement": "{$parameters.roleArmanagement}", "enableArmanagement": {$parameters.enableArmanagement},
【追加後】{ "create": [ { "name": "Create_User_Bakuraku", "description": "Task to create users in the Target Bakuraku Tenant", "body": { "users": [ { "role": { "roleInvoice": "{$parameters.roleInvoice}", "enableInvoice": {$parameters.enableInvoice}, "roleArmanagement": "{$parameters.roleArmanagement}", "enableArmanagement": {$parameters.enableArmanagement}, "roleId": "{$parameters.roleId}" }, "sendInvitation": true, "activationStatus": "ACTIVATED", "email": "{$parameters.email}", "name": "{$parameters.username}", "employeeCode": "{$parameters.employeeCode}" } ] }, "method": "post", "path": "rest/v1/id/users/bulk_import", "responses": { "200": { "extract": { "*by_path": "body.results.0.employeeCode" } } } } ], (略)【追加前】
{ "create": [ { "name": "Create_User_Bakuraku", "description": "Task to create users in the Target Bakuraku Tenant", "body": { "users": [ { "role": { "roleId": "{$parameters.roleId}" }, "sendInvitation": true, "activationStatus": "ACTIVATED", "email": "{$parameters.email}", "name": "{$parameters.username}", "employeeCode": "{$parameters.employeeCode}" } ] }, "method": "post", "path": "rest/v1/id/users/bulk_import", "responses": { "200": { "extract": { "*by_path": "body.results.0.employeeCode" } } } } ], (略)
ユーザープロビジョニングの動作確認
バクラク側に登録されているユーザーに対し、特定の権限のみ上書きできることを確認します。本章では、共通管理権限、債務管理権限および債権管理権限の上書きを確認します。
-
Users タブに移動し、対象ユーザーの Pending をクリックします
- [Approve]をクリックします
- プロビジョニングステータスが Provisioned に変更されたことを確認します
- バクラクの共通管理画面 > ユーザー管理 を確認し、対象のユーザーが更新されていることを確認します
ユーザープロビジョニングの動作確認は以上です。
ユーザープロビジョニングの無効化
- バクラクに管理者の共通管理権限をもつユーザーでログインします
- 設定 > API管理 を選択します
- 使用しているAPIキーの 操作▼ >[削除]をクリックします
- [削除]をクリックします
*事前に削除対象となるAPIキーがOneLogin以外で使われていないことを必ずご確認ください。
ユーザープロビジョニングの無効化は以上です。