ユーザーがSSOプロバイダを使用してBox Platformアプリケーションにログインする際、まず必要なのは、Boxユーザーレコードが作成された前回のログイン試行から、そのユーザーがすでに存在するかどうかを確認することです。
Boxユーザーが検出されたら、そのユーザーとしてBox APIにアクセスするために、ユーザーアクセストークンを作成するかas-user呼び出しを実行する必要があります。
Boxユーザーが検出されない場合は、そのSSOユーザーレコードに関連付けられた新しいユーザーを作成する必要があります。
既存のユーザーの検索には、会社ユーザーのリストを取得エンドポイントを使用できます。external_app_user_idとloginのどちらのメソッドを使用しているかによって、クエリは若干異なります。
external_app_user_idを使用したユーザーの検索
格納されているexternal_app_user_id値を使用して会社ユーザーを検索するには、SSOプロバイダの次の情報が必要になります。
- UID (必須): SSOユーザーレコードの一意の識別子です。
取得したら、パラメータでexternal_app_user_id定義を指定して、会社ユーザーのリストを取得エンドポイントにリクエストを実行します。
特定のアプリケーションのApp Userを取得できるのは、そのApp Userを作成したのがこのアプリケーションである場合のみです。あるアプリケーションを使用して、別のアプリケーションで作成されたユーザーを検索した場合、データは返されません。
const ssoUID = 'SSO User Unique ID';
// Check enterprise users for matching external_app_user_id against SSO UID
client.enterprise.getUsers({ "external_app_user_id": ssoUID })
.then((users) => {
if (users.total_count > 0) {
// User found, fetch user ID
const userId = users.entries[0].id;
} else {
// User not found - create new user record
}
});
メールアドレスを使用したユーザーの検索
loginのメールアドレスを使用して会社ユーザーを検索するには、SSOプロバイダの次の情報が必要になります。
- メールアドレス (必須): SSOユーザーレコードの一意のメールアドレスです。
取得したら、filter_termとしてメールアドレスを指定して、会社ユーザーのリストを取得エンドポイントにリクエストを実行します。これは、メールアドレスまたは名前を使用した検索に使用できるようになります。
const ssoEmail = 'ssouser@email.com';
client.enterprise.getUsers({filter_term: ssoEmail})
.then(users => {
if (users.total_count > 0) {
// User found, fetch user ID
const userId = users.entries[0].id;
} else {
// User not found - create new user record
}
});