Box Developerドキュメント

SSO IDとApp Userの関連付け

ガイド SSOとApp User SSO IDとApp Userの関連付け

SSO IDとApp Userの関連付け

ユーザーがSSOプロバイダの資格情報を使用してカスタムのBoxアプリケーションに初めてサインインするときに、新しいBoxユーザーを作成し、ユーザーのSSOユーザーレコードと関連付ける必要があります。その際、このSSOユーザーレコードの一意の情報の一部を使用します。通常、この2つのアカウントの関連付けに使用されるデータは、一意のIDとメールアドレスのいずれかです。

この関連付けを行うためにBoxアカウントを作成する方法がいくつかあります。

  • Boxユーザーのexternal_app_user_idフィールドを使用して、SSOプロバイダの一意のIDを格納します。
  • Boxユーザーのloginフィールドを使用して、SSOプロバイダの一意のメールアドレスを格納します (管理対象ユーザーのみ)。

external_app_user_idによる関連付け

Boxユーザーレコードのexternal_app_user_idフィールドを使用する方法は、App Userと管理対象ユーザーの両方に使用可能なオプションで、SSOプロバイダのユーザーレコードをBoxユーザーアカウントに関連付ける際に推奨される方法です。

App User

external_app_user_idによってSSOユーザーレコードに関連付けられた新しいBox App Userを作成するには、SSOプロバイダから以下の2つの情報が必要になります。

  • UID (必須): SSOユーザーレコードの一意の識別子です。
  • 名前 (省略可): レコードの一貫性を保つために、Boxユーザーレコードと関連付けるSSOユーザー名を抽出します。

取得したら、ユーザーパラメータでオプションのexternal_app_user_id定義を指定して、新しいApp Userを作成するリクエストを実行します。

Node
const ssoName = 'SSO User Name';
const ssoUID = 'SSO User Unique ID';
const spaceAmount = 1073741824;

// Create app user
client.enterprise.addAppUser(
    ssoName,
    {
      space_amount: spaceAmount,
      external_app_user_id: ssoUID
    }
).then(appUser => {
    console.log(`New user created: ${appUser.name}`);
});

Java
String ssoName = "SSO User Name";
String ssoUID = "SSO User Unique ID";

// Create app user
CreateUserParams params = new CreateUserParams();
params.setExternalAppUserId(ssoUID);
BoxUser.Info createdUserInfo = BoxUser.createAppUser(client, ssoName, params);

outputString = "New user created: " + createdUserInfo.getName();

Python
sso_name = 'SSO User Name'
sso_uid = 'SSO User Unique ID'
space = 1073741824

# Create app user
user = box_client.create_user(sso_name, None, space_amount=space, external_app_user_id=sso_uid)
print('New user created: {name}')

管理対象ユーザー

external_app_user_idによってSSOユーザーレコードに関連付けられた新しい管理対象ユーザーを作成するには、SSOプロバイダから以下の2つの情報が必要になります。

  • メールアドレス (必須): SSOユーザーレコードの一意のメールアドレスです。
  • 名前 (省略可): レコードの一貫性を保つために、Boxユーザーレコードと関連付けるSSOユーザーを抽出します。

取得したら、ログイン用のSSOユーザーレコードのメールアドレスを指定して、新しい管理対象ユーザーを作成するリクエストを実行します。

Node
const ssoName = 'SSO User Name';
const ssoEmail = 'ssouser@email.com';
const spaceAmount = 1073741824;

// Create app user
client.enterprise.addUser(
    ssoEmail,
    ssoName,
    {
        space_amount: spaceAmount
    }
).then(managedUser => {
    console.log(`New user created: ${managedUser.name}`);
});

Java
String ssoName = "SSO User Name";
String ssoEmail = "ssouser@email.com";

// Create managed user
BoxUser.Info createdUserInfo =
  BoxUser.createEnterpriseUser(client, ssoEmail, ssoName);

outputString = "New user created: " + createdUserInfo.getName();

Python
sso_name = 'SSO User Name'
sso_email = 'ssouser@email.com'
space = 1073741824

# Create managed user
user = box_client.create_user(sso_name, sso_email, space_amount=space)
print('New user created: {name}')

メールアドレスによる関連付け

SSOユーザーのメールアドレスによって関連付けられている新しい管理対象ユーザーの作成は、標準的な管理対象ユーザーの作成プロセスと同じです。

ユーザーは、SSOプロバイダを介してログインした後、まだBoxユーザーとして存在しない場合に、SSOユーザーレコードからメールアドレスを抽出して、新しいBox管理対象ユーザーを作成するリクエストを実行します。

cURL
curl -i -X POST "https://api.box.com/2.0/users" \
     -H "authorization: Bearer <ACCESS_TOKEN>" \
     -H "content-type: application/json" \
     -d '{
       "login": "ceo@example.com",
       "name": "Aaron Levie"
     }'
TypeScript Gen
await client.users.createUser({
  name: userName,
  isPlatformAccessOnly: true,
} satisfies CreateUserRequestBody);
Python Gen
client.users.create_user(user_name, is_platform_access_only=True)
.NET Gen
await client.Users.CreateUserAsync(requestBody: new CreateUserRequestBody(name: userName) { IsPlatformAccessOnly = true });
Java
BoxUser.Info createdUserInfo = BoxUser.createEnterpriseUser(api, "user@example.com", "A User");
Python
new_user = client.create_user('Temp User', 'user@example.com')
.NET
var userParams = new BoxUserRequest()
{
    Name = "Example User",
    Login = "user@example.com"
};
BoxUser newUser = await client.UsersManager.CreateEnterpriseUserAsync(userParams);
Node
client.enterprise.addUser(
	'eddard@winterfell.example.com',
	'Ned Stark',
	{
		role: client.enterprise.userRoles.COADMIN,
		address: '555 Box Lane',
		status: client.enterprise.userStatuses.CANNOT_DELETE_OR_EDIT
	})
	.then(user => {
		/* user -> {
			type: 'user',
			id: '44444',
			name: 'Ned Stark',
			login: 'eddard@winterfell.example.com',
			created_at: '2012-11-15T16:34:28-08:00',
			modified_at: '2012-11-15T16:34:29-08:00',
			role: 'coadmin',
			language: 'en',
			timezone: 'America/Los_Angeles',
			space_amount: 5368709120,
			space_used: 0,
			max_upload_size: 2147483648,
			status: 'active',
			job_title: '',
			phone: '',
			address: '555 Box Lane',
			avatar_url: 'https://www.box.com/api/avatar/large/deprecated' }
        */
	});
iOS
client.users.create(login: "new.user@example.com", name: "New User") { (result: Result<User, BoxSDKError>) in
    guard case let .success(user) = result else {
        print("Error creating user")
        return
    }

    print("Created user \(user.name), with login \(user.login)")
}