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を作成するリクエストを実行します。
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}`);
});
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();
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ユーザーレコードのメールアドレスを指定して、新しい管理対象ユーザーを作成するリクエストを実行します。
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}`);
});
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();
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 -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"
}'
await client.users.createUser({
name: userName,
isPlatformAccessOnly: true,
} satisfies CreateUserRequestBody);
client.users.create_user(user_name, is_platform_access_only=True)
await client.Users.CreateUserAsync(requestBody: new CreateUserRequestBody(name: userName) { IsPlatformAccessOnly = true });
BoxUser.Info createdUserInfo = BoxUser.createEnterpriseUser(api, "user@example.com", "A User");
new_user = client.create_user('Temp User', 'user@example.com')
var userParams = new BoxUserRequest()
{
Name = "Example User",
Login = "user@example.com"
};
BoxUser newUser = await client.UsersManager.CreateEnterpriseUserAsync(userParams);
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' }
*/
});
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)")
}