-
Udemy SCIM Bearerトークンを更新する方法
記事を読むUdemy SCIM Bearerトークンは、SCIMを使用してユーザーやグループのプロビジョニングおよび管理を行う際に、IDプロバイダー(IdP)がUdemy Businessに認証するための安全な認証情報です。
プロバイダーでSCIMを設定する際、このトークンはUdemy Business管理者画面の「管理」→「設定」→「プロビジョニング(SCIM)」で生成します。IdPは、組織のSCIM API(https://{your-org}.udemy.com/scim/v2/)を呼び出す際に、このトークンをAuthorizationヘッダー(Bearer <token>)で使用します。各トークンは組織ごとに固有のもので、有効期限は2年間です。トークンが生成されたらコピーして安全に保管してください。
現在のSCIMトークンを更新または再生成するには、Udemy Businessアカウントの管理者権限が必要です。アクセス権限がある場合は、「管理」→「設定」→「プロビジョニング(SCIM)」に移動し、「認証情報を再生成」をクリックします。新しいトークンを更新するために、ご利用のIDプロバイダー(IdP)にアクセスできることを確認するか、IDプロバイダーの管理者に更新を依頼してください。
メモ: 認証情報を再生成すると、以前のトークンはすべて無効になります。IdP側でトークンを更新するまで、連携は機能しなくなります。
レガシー接続をご利用の場合は、このガイドに従って新しいBearerトークン認証へ移行するか、「トークンを生成」をクリックします。
-
UdemyのSCIM APIでユーザーライセンスを管理する
記事を読む本記事では、組織がUdemyのクロスドメインID管理システム(SCIM)APIを使用して、ユーザーライセンスを追加または削除する方法について説明します。
SCIMは、OktaやOneLoginなどの複数のIDプロバイダーに対応しています。 Udemy Business SCIM APIは、その他のIDプロバイダーや独自に構築されたツールでも利用できます。
メモ: Udemy BusinessのSCIM APIトークンの有効期間はおよそ2年間です。管理者には以下を知らせる通知が送信されます:
- トークンの有効期限の30日前
- トークンの有効期限後
ライセンス使用状況
IDプロバイダーでは、ライセンスは通常、グループ単位で、場合によっては個人単位で割り当てられます。リクエストにlicenseType属性が含まれている場合、対象ユーザーに割り当てるライセンスタイプが指定されます。
- この属性はユーザー作成時に含めることができ、ユーザーがUdemy Businessアカウントを有効化すると、指定されたライセンスが割り当てられます。
- この属性は既存ユーザーにも含めることができ、既存のライセンスを付与または削除することができます。
- 必要なタイプのライセンスがアカウント上で不足している場合、Udemy BusinessはIDプロバイダーにエラーメッセージを送信し、変更は行われません。
ライセンス削除に関する制限事項:
ユーザーにはライセンスタイプが必須です。ユーザーのすべてのライセンスを解放するには、そのユーザーを組織のアカウントで無効化する必要があります。Udemy Businessが空のlicenseType属性を受け取った場合、その属性は無視されます。
現在「Pro」ライセンスから「エンタープライズ」ライセンスへのダウングレードは、非アクティブなユーザー(「Pro」と「エンタープライズ」の両方のライセンスがプロビジョニングされているが、まだログインしていないユーザー)にはサポートされていません。
必須のlicenseType属性を指定する
組織のIDプロバイダーに含める必要があるlicenseTypes属性は次のとおりです:
urn:ietf:params:scim:schemas:extension:udemy:2.0:User
この属性は文字列のリストとして指定する必要があり、それぞれの文字列がライセンス名を表します(ライセンスタイプの詳細については以下のセクションを参照してください)。
受け入れ可能な値と対応するライセンスタイプを指定する
ユーザーのライセンスタイプを管理するには、受け入れ可能な値を入力する必要があります。以下の表に示す入力値は、Udemy Businessでサポートされているライセンスタイプに対して検証されます。ライセンス名の値は大文字と小文字を区別しません。
ライセンス名 タイプ 受け入れ可能な値の例
Enterprise プランライセンス Enterprise、eNtErpRisE、enTERprise、
その他。Pro
追加のライセンス
Pro、pRo、PRo、
その他。メモ: 受け入れ不可能な値が指定された場合、エラーメッセージが表示されます。
ユーザー作成時にlicenseTypesを含める方法
以下は、ユーザー作成時にlicenseTypesを含めるためにIDプロバイダーに入力する例です。
POST /scim/v2/Users HTTP/1.1 Host: myorganization.udemy.com Accept: application/scim+json Authorization: Bearer <ここにBearerトークンを入力> Content-Type: application/scim+json { "schemas": [ "urn:ietf:params:scim:schemas:core:2.0:User", "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User", "urn:ietf:params:scim:schemas:extension:udemy:2.0:User" ], "userName": "john.doe@udemy.com", "externalId": "someexternalidtest12312", "name": { "givenName": "John", "familyName": "Doe" }, "emails": [ { "primary": true, "type": "work", "value": "john.doe@udemy.com" } ], "active": true, "urn:ietf:params:scim:schemas:extension:udemy:2.0:User": { "licenseTypes": ["Enterprise", "Pro"] } }既存ユーザーの属性を置き換え、licenseTypesを含める方法
以下は、既存のユーザーの属性を置き換え、licenseTypesを含めるために入力する例です:
PUT /scim/v2/Users/<scim-user-uuid> HTTP/1.1
Host: myorganization.udemy.com
Accept: application/scim+json
Authorization: Bearer <ここにBearerトークンを入力>
Content-Type: application/scim+json
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User",
"urn:ietf:params:scim:schemas:extension:udemy:2.0:User"
],
"userName": "john.doe@udemy.com",
"externalId": "someexternalidtest12312",
"name": {
"givenName": "John",
"familyName": "Doe"
},
"emails": [
{
"primary": true,
"type": "work",
"value": "john.doe@udemy.com"
}
],
"active": true,
"urn:ietf:params:scim:schemas:extension:udemy:2.0:User": {
"licenseTypes": ["Enterprise", "Pro"]
}
}既存ユーザーのlicenseTypesフィールドのみを設定する方法
既存のユーザーのlicenseTypesフィールドのみを設定するには、PATCHリクエストで次の2つのオプションを使用できます:
"op": "add"
既存のライセンスにアドオンライセンス(つまり「Pro」)を追加するには、以下を使用します:
"op": "replace"
既存の値を上書きします。
メモ:
追加操作により、Udemy Business Proライセンスを、既存のエンタープライズまたはエンタープライズ+Proライセンスに追加することができます。すでにエンタープライズライセンスをお持ちのお客様には、Proライセンスが追加されます。エンタープライズ+Proライセンスをすでに所有しているユーザーには、ライセンスは追加されません。
既存のユーザーのlicenseTypesフィールドのみを設定する場合の入力例を以下に示します:
PATCH /scim/v2/Users/<scim-user-uuid> HTTP/1.1 Host: myorganization.udemy.com Accept: application/scim+json Authorization: Bearer <Bearerトークンをここに入力> Content-Type: application/scim+json { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp", "urn:ietf:params:scim:schemas:extension:udemy:2.0:User", ], "Operations": [ { "op": "add", "urn:ietf:params:scim:schemas:extension:udemy:2.0:User": { "licenseTypes": ["Pro"] } } ] }Wユーザーの現在のライセンスセット全体を上書きする方法
置換操作では、ユーザーに現在割り当てられているライセンスのセット全体が上書きされます。そのためには、以下を入力する必要があります。
PATCH /scim/v2/Users/<scim-user-uuid> HTTP/1.1 Host: myorganization.udemy.com Accept: application/scim+json Authorization: Bearer <Bearerトークンをここに入力> Content-Type: application/scim+json { "schemas": [ "urn:ietf:params:scim:api:messages:2.0:PatchOp", "urn:ietf:params:scim:schemas:extension:udemy:2.0:User", ], "Operations": [ { "op": "replace", "urn:ietf:params:scim:schemas:extension:udemy:2.0:User": { "licenseTypes": ["Enterprise", "Pro"] } } ] } -
Entra ID(Azure AD)でSCIMプロビジョニングを設定する
記事を読むシングルサインオン(SSO)の設定 が終了したら、 Udemy BusinessでEntra ID(旧Azure AD)向けのクロスドメインID管理(SCIM 2.0) のプロビジョニングを設定します。
SCIMプロビジョニングにより、プロビジョニング、プロビジョニング解除、グループの作成、グループメンバーシップの管理、ライセンスの管理、ユーザープロフィールの詳細の変更(名前、メールアドレスなど)をEntra IDで行えます。変更の結果は、Udemy Businessに自動的に反映されます。Entra IDおよびUdemy Businessの両方でこうした作業を別々に実施する必要がなくなり、Entra IDからすべて同期されるようになります。
メモ:
- SCIMをアクティブ化する前にSSOを有効にする必要があります。
- シングルサインオンとプロビジョニングをご利用いただけるのは、Udemy Businessエンタープライズプランのお客様です。
- Entra IDでプロビジョニングが行われているユーザーは、Udemy Businessアプリケーションへの初回ログインを行うまでライセンスを必要としません。
- SCIMプロビジョニングに変更を加えた場合、Entra IDからUdemy Businessへの同期のみ可能であり、その逆はできません。
- Entra IDのSCIMで管理されているユーザーやグループにUdemy Businessアプリから変更を加えることはできません。ユーザーおよびグループのデータに関して信頼できる唯一の情報源はSCIMです。
- Entra IDに、Udemy Businessを利用しないユーザーや、除外すべきユーザー(例: 請負業者、派遣社員)が含まれている場合は、これまでどおり手動でUdemy Businessでグループを作成してください。
- メモ: Udemy BusinessのSCIM APIトークンの有効期間はおよそ2年間です。管理者には以下を知らせる通知が送信されます:
- トークンの有効期限の30日前
- トークンの有効期限後
目次
Entra IDでSCIMプロビジョニングを設定する
1. Udemy Businessアカウントで、管理 > 設定 > プロビジョニング(SCIM)に移動します。
2.設定を開始をクリックして、IDプロバイダーを選択し、指示に従ってシークレットトークン(Bearer token)を作成し、それをEntra IDに入力します。
3. Entra IDアカウントにアクセスし、Udemy Business SSOアプリを開きます。以下の手順に従って設定します。詳しくは、Entra IDよるSCIMプロビジョニングについて解説しているMicrosoftの設定ガイドを参照してください。
Azureポータルのプロビジョニングタブを開きます。
メモ: 以下のスクリーンショットでは、SCIMの設定方法を説明するために「udemyazure」というテスト名を使用しています。自身のインスタンスを設定する際は、チームで命名したアプリを使用してください。
4.プロビジョニングモードフィールドで、自動を選択します。
5.管理者資格情報セクションで次の操作を行います。
テナントのURL: https://yourdomain.udemy.com/scim/v2(yourdomainはお使いのUdemy BusinessアカウントのURL)
シークレットトークン: これはBearerトークンで、Udemy Businessアカウント内で生成または表示できます。
- シークレットトークンを取得するには、管理 > 設定 > ユーザーアクセスに移動します。
6.テスト接続をクリックし、正しく機能することを確認します。
7. (任意)Azureからエラーに関する通知を受け取りたい場合は、メールアドレスを入力してください。
8.マッピングで次の操作を行います。
Microsoft Entra IDユーザーのプロビジョニングに移動:
開くと、属性マッピングの一覧が表示されます
サポートされている属性
以下の必須属性がcustomappsso属性に追加されていることを確認します。これらのフィールドは、SCIMプロビジョニングがUdemy内で機能するために必要です。
SCIM属性 必須か コース解説 emails[type eq "work"].value
はい ユーザーのメールアドレス。一意でなければなりません userName
可能 IdPでのuserName。一意でなければなりません。 アクティブ
可能 ユーザーを非アクティブ化/再アクティブするためのフラグ externalId
可能 IdPにおけるユーザーのexternalId。一意でなければなりません。 urn:ietf:params:scim:schemas:extension: enterprise:2.0:User:employeeNumber
はい EnterpriseSchemaからemployeeNumberフィールドを返し、external_idフィールドとして保存します。外部IDに送信する属性と一致している必要があります。 name.givenName
いいえ ユーザーのファーストネーム。必須ではありませんが、ユーザーの特定に役立つため、これらの属性を常に指定することをお勧めします。 name.familyName
いいえ ユーザーの姓。必須ではありませんが、ユーザーの特定に役立つため、これらの属性を常に指定することをお勧めします。 name, { givenName, familyName }不可 ユーザーの氏名。必須ではありませんが、ユーザーの特定に役立つため、これらの属性を常に指定することをお勧めします。 title
いいえ Userの肩書。例:「シニアエンジニア」。 urn:ietf:params:scim:schemas:extension: udemy:2.0:User:licensePoolName
いいえ ライセンスプール名。 urn:ietf:params:scim:schemas:extension: udemy:2.0:User:licenseTypes
いいえ コンマ区切りのライセンスタイプの一覧。
許容される値:
- エンタープライズ
- Enterprise Pro
emails[type eq "work"].valueに設定されているMicrosoft Entra ID属性が、SSOのメール属性および要求で設定した値と一致していることを確認します。(例: mailまたはuserPrincipalName)
属性Switch([IsSoftDeleted], , "False", "True", "True", "False")がアクティブにマッピングされ、ユーザーの非アクティブ化を引き継ぐことができることを確認します。
属性を追加したら、Matching precedenceを更新し、emails[type eq "work"].valueを1に設定します。
ユーザー名を2または3に更新する必要があるかもしれません。9. ユーザー属性マッピングの一番下までスクロールし、詳細オプションの表示を有効にします。customappssoの属性リストの編集を選択し、IDとuserNameの両方で大文字と小文字を区別するを有効にします。
10. メインのプロビジョニング設定画面に戻ります。
11.範囲フィールドで、ユーザーとグループをどのように同期するかを選択します。
特定の従業員や部門だけがアクセスできるようにする必要がある場合は、Udemy Businessアプリに割り当てられているユーザーとグループに限定して同期するようにします。全従業員にアクセス権を付与する場合は、すべてのユーザーおよびグループを同期します。
Udemy Businessのアクセス権を持つユーザーとグループをプロビジョニング対象として追加するときは、次の操作を行います。
12.ユーザーとグループをクリックします。
13.ユーザーの追加をクリックします(ユーザーとグループの両方を追加するオプションが表示されます)。
アプリケーションに追加するユーザーまたはグループすべてを選択し、選択をクリックします。
トラブルシューティング
マッピング関連:
プロビジョニング時に次のエラーが発生した場合:
{"スキーマ":["urn:ietf:params:scim:api:messages:2.0:Error"],"ステータス":400,"詳細":"{'emails': ['このフィールドは必須です。']}"}
ユーザーのマッピングを変更してください。
emails[type eq "work"].valueをuserPrincipalNameにマッピングしてください。userPrincipalNameはメールアドレスの格納場所です。
「ユーザープロファイル」を開くと、メールアドレスが格納されているフィールドを確認できます。
ユーザーのプロビジョニングにエラーが発生した場合は、プロビジョニングログを見て詳細情報を確認できます。
- このログを取得するには、AzureのUdemyアプリに移動し、「プロビジョニング」 > 「プロビジョニングログ」 > 「影響を受けたユーザーを検索」 > 「トラブルシューティングと推奨」の順に進みます。
- 必要に応じてサポートチケットを開き、Azureプロビジョニングログのスクリーンショットを提示してください。Udemyがエラー内容を確認いたします。
-
OneLoginでSCIMプロビジョニングを設定する
記事を読むシングルサインオン(SSO)の設定が終了したら、OneLoginでUdemy Business向けのクロスドメインID管理システム(SCIM) のプロビジョニングを設定します。この設定により、プロビジョニング、プロビジョニング解除、グループの作成、グループメンバーシップの管理、ユーザープロフィールの詳細(名前、メールアドレスなど)の変更をOneLoginで行えます。変更内容はUdemy Businessに自動的に 反映されます。OneLoginとUdemy Businessでこうした作業を別々に行う必要がなくなり、OneLoginからすべて同期されるようになります。
この記事では、OneLoginでSCIMプロビジョニングを設定する方法について説明します。
メモ: Udemy BusinessのSCIM APIトークンの有効期間はおよそ2年間です。管理者には以下を知らせる通知が送信されます:
- トークンの有効期限の30日前
- トークンの有効期限後
SCIMプロビジョニングを有効にするには
Udemy BusinessアカウントでSCIMプロビジョニングを有効化するには、 Udemy Businessアカウントにログインし、管理 > 設定 > プロビジョニング(SCIM)に進みます。
設定を開始をクリックします。指示に従ってSCIMを有効化し、シークレットトークン(Bearerトークン)を作成し、それをOneLoginに保存します。
次にOneLoginアカウントにアクセスしてUdemy Business SSOアプリを開き、 以下の手順に従って設定します。
ユーザーをプロビジョニングする方法の詳細は、OneLoginのサポートセンターでもご確認いただけます。
1. 管理者パネルで「Applications」タブをクリックします。
2. 「Configuration」タブに移動します。「Configuration」タブ内で、Udemy Businessアカウントから上記で生成したSCIM Bearerトークンを入力して、「Enabled」に設定します。
3. 次に「Provisioning」タブに移動して、「Enable provisioning」ボックスをオンにします。
ユーザーグループをUdemy Businessと同期するためのルールの作成
OneLoginでは、Udemy Businessアカウント内の特定のグループのユーザーと同期するための「ルール」という概念を使用します。グループを同期するために異なる要件に基づいてルールを作成するための多くの方法があります。次に、「Engineers」と呼ばれるグループのユーザーを同期するためのルールを作成する方法の具体例を挙げます。
1. 「Rules」タブに移動して、「Add Rule」を選択します。
2. 前提条件: 次の手順に進む前に、サポートチーム に連絡して、Udemy BusinessからSCIMグループをプルできるように、機能フラグを有効にするよう依頼してください。この機能を有効にすると、Udemy Businessから既存グループをプルして、OneLoginでアクセスできるようになります。
3. 「Edit Mapping」画面内で、ルールのロジックを設定できます。この例では、「ユーザーのグループがエンジニアグループである場合、Udemy BusinessにおけるユーザーのグループをEngineersに設定する」というロジックを作成します。Udemy Businessで「From Existing」のグループをプルするには、権利を更新する必要があります。
4. 「Parameters」タブに移動します。
サポートされている属性
以下の必須属性がParameters Tab属性に追加されていることを確認します。これらのフィールドは、SCIMプロビジョニングがUdemy内で機能するために必要です。
SCIM属性 必須か コース解説 SCIM.email
はい
ユーザーのメールアドレス。一意でなければなりません externalId
可能
IdPにおけるユーザーのexternalId。一意でなければなりません。OneLoginのIDにマッピングすることをおすすめします。 urn:ietf:params:scim:schemas:extension: enterprise:2.0:User:employeeNumber
はい
このフィールドはexternalIdの値を保存するために必要です。外部IDの値と一致する必要があります。 SCIM.name.givenName
いいえ
ユーザーのファーストネーム。必須ではありませんが、ユーザーの特定に役立つため、これらの属性を常に指定することをお勧めします。 SCIM.name.familyName
いいえ
ユーザーの姓。必須ではありませんが、ユーザーの特定に役立つため、これらの属性を常に指定することをお勧めします。
メモ: OneLoginではパラメーターの同期を毎日実行するため、パラメーターを追加してもすぐに反映されない場合があります。5.「Groups」フィールドをクリックします。
6.「Include in User Provisioning」ボックスをオンにして、保存します。
7. OneLoginでユーザーを追加して、ユーザーのグループを「Engineering Group」に設定したら、以下を実行します。
8. ユーザーがUdemy Businessアプリケーションに追加され、ルールに従って同期されると、このユーザーがUdemy Businessアカウントの「Engineers」グループに追加されます。
-
SCIMでユーザーとグループの管理を自動化する方法
記事を読むUdemy Businessは、クロスドメインID管理システム(SCIM)規格によるユーザーとグループのアクセス権限とIDの管理に対応しています。SCIMは、シングルサインオン(SSO)サービスおよびIDプロバイダーによって、Udemy Businessなど、各種アプリやツールの違いを超えてユーザーを管理するために使用されます。
Udemy Businessの規模とセキュリティを最大限にし、ユーザー管理の手間を最小限にすることを望む組織にとって、SCIMは理想的なオプションです。
SCIMを使ってできること:
- ライセンスの自動付与と、IDプロバイダーによるユーザーとグループへのアクセス(プロビジョニング)
- IDプロバイダーによるユーザーとグループの自動非アクティブ化(プロビジョニング解除)
- 以前プロビジョニング解除されたユーザーを再アクティブ化する(ユーザーの個人を特定可能な情報が匿名化されていない場合)。
- ユーザーの詳細情報の変更(名前、メールアドレス)
- グループを作成、削除、編集する
- グループのメンバーシップを管理する
- ライセンスプールにユーザーを追加する
- Udemy Business Proライセンスの割り当て
SCIMを使ってできないこと:
- 任意のIDプロバイダー上のSCIM経由で個人を特定可能な情報(PII)を削除する。
- Udemy BusinessのデータをIDプロバイダーに反映する
- ロールの管理(管理者、グループ管理者、ユーザー)。
- メモ: SCIMでプロビジョニングされたユーザーは、Udemy Businessユーザー管理ポータルから手動で招待される場合とは異なり、Udemy Businessライセンスを取得するための自動生成の招待メールを受け取りません。貴社の学習担当チームは、SSOプロバイダー経由でログインしてアクセスを取得する方法を説明する別のお知らせを送信することが推奨されます。しかし、SCIM経由で再アクティベート化されたユーザーは、アカウントが再アクティベート化されたことを知らせる自動生成メールをUdemyから受け取ります。
上記のいずれかのサポートされている操作を行うと、データまたは変更内容がUdemy Businessに自動的に反映されます。
Udemy BusinessアカウントへのSCIM統合のキーポイント
- SCIM統合の設定方法は、IDプロバイダーによって異なります。
- Udemy Businessは、アクセスおよびIDを管理する主要IDプロバイダーとSSOサービス向けのSCIMプロビジョニングをサポートします。
- SCIMプロビジョニングをご利用いただけるのは、シングルサインオン(SSO)を使用するエンタープライズプランのお客様に限られます。
- SSOサービスへのプロビジョニングをSCIMで行ったユーザーは、Udemy Businessで初回のサインインを行うまでライセンスを使用しません。SCIMでプロビジョニングを行い、初回のサインインを行っていない場合は、ライセンスなしで閲覧できる全ユーザー向けページが表示されます。
- すべてのユーザーのUdemy Business Proライセンスを購入したお客様の場合、ユーザーが招待を受け入れるか、SSO/SCIM経由で認証すると、Proライセンスが自動的に割り当てられます。
- メモ: SCIMが有効になっている場合、UdemyはSAML経由の属性マッピングにSCIMプロトコルを使用します。グループはSCIMユーザー属性ではないため、以前にSAMLのみの構成の一部として属性をマップしていた場合、SAML経由で渡されません。
-
Udemy BusinessのSCIM APIトークンの有効期間はおよそ2年間です。管理者には以下を知らせる通知が送信されます:
- トークンの有効期限の30日前
- トークンの有効期限後
SCIM管理されているユーザーには、名前とメールの横に灰色のSCIMフラグが表示されます。 SCIMがプロビジョニング済みのステータスを持つユーザーは、初めてログインするまでアクティブなライセンスを消費しません。
SCIMプロビジョニングを有効にするには
Udemy BusinessアカウントのSCIMプロビジョニングを有効にするには、Udemy Businessアカウントに移動し、管理 > 設定 > プロビジョニング(SCIM)の順に移動します。
「SCIMインテグレーション」までスクロールします。次に、指示に従ってSCIMを有効化し、ドロップダウンリストからIDプロバイダーを選択し、資格情報(ユーザー名とパスワードまたはSecret/Bearerトークン)を生成します。その後、構成の一部として、この情報をIDプロバイダーに入力する必要があります。
使用するIDプロバイダーに応じて、以下の適切なガイドの指示に従ってSCIM設定を行います。
その他のIDプロバイダー、もしくはご自身のツールを利用する場合は、UdemyのSCIM API設定ガイドを参照してください。
SCIMプロビジョニングを無効にするには
(プロバイダーを変更する場合や、今後SCIMを使用しない場合に)Udemy BusinessアカウントのSCIMプロビジョニングを無効にするには、管理 > 設定 > プロビジョニング(SCIM)の順に移動します。
「SCIMインテグレーション」までスクロールし、「統合を無効にする」リンクをクリックして、表示される案内に従ってSCIMを無効にします。これにより、Udemy Business側で統合が無効になりますが、会社のITチームによって、IDプロバイダー側の統合を無効にする必要があります。
プロビジョニングを無効にしても、引き続きUdemy Businessを使い続けることはできますが、ユーザーやグループの情報をプラットフォーム内で手動で更新する必要があります。
SCIMでユーザーをプロビジョニング解除する
IDプロバイダーによりプロビジョニング解除されたUdemy Businessユーザーは、Udemy Business内で非アクティブ化されます。 後日ユーザーを再アクティブ化する場合や、ユーザーのデータを誤って匿名化してしまい、元に戻せない場合に備えて学習者の履歴を保存するため、最初に「論理削除(ソフトデリート)」を行います。 ユーザーとそのデータを完全に削除したい場合は、以下の手順に従ってください。
SCIM管理された学習者のPIIを削除する
SCIMを使ったIDプロバイダーによる管理対象から学習者を外したい場合は、まずSSOのActive Directoryでその学習者のデプロビジョニングを行います。これにより、Udemy Businessアカウントから学習者のPIIを削除できるようになります。
- Udemy Businessで学習者を匿名化する方法をご覧ください。
SSO IDプロバイダーを通じてではなく、Udemy Businessアカウント内で学習者を管理する必要があります。さらに、その学習者のPIIを削除したくない場合は、Udemyのサポートチームに連絡してください。
-
OktaでSCIMプロビジョニングを設定する
記事を読むこのガイドでは、すでにOktaとUdemy Businessをご利用中のお客様が、クロスドメインID管理(SCIM 2.0)を使用してUdemy Businessユーザーとグループの自動プロビジョニング、デプロビジョニング、プロフィール更新、グループ管理の設定を行う方法について説明します。
すでにSCIMプロビジョニングを設定済みで、新しいUdemy Businessアプリを使用したい場合は、既存の統合をBearerトークン認証に移行する必要があります。
- 手順については、既存の統合をBearerトークンに移行して、Oktaで新しいUdemy Businessアプリを利用できるようにするを参照してください。
メモ:
- OktaのUdemy BusinessのSSOがすでに有効になっている場合は、SSOを再設定する必要はありません。
- UdemyサポートチームがSSOを手動で設定している場合は、Oktaアカウントに新しいUdemy Businessアプリを追加してください。Udemy Businessアプリは、Applications(アプリケーション)でUdemy Businessを検索すると見つかります。Oktaにおいてこのアプリは新バージョンとなりますので、既存のアプリをご利用のお客様はSCIMプロビジョニングを有効化する前にシングルサインオン(SSO)の再設定が必要な場合があります(詳しい手順は以下を参照してください)。
- Oktaでプロビジョニングされたユーザーは、Udemy Businessアプリに初回ログインするまで、アクティブライセンスは消費されません。
- SCIMで管理されるユーザーとグループは、Oktaでのみ変更できます。
- SCIMが有効になっている場合、UdemyはSAML経由の属性マッピングにSCIMプロトコルを使用します。グループはSCIMユーザー属性ではないため、以前にSAMLのみの構成の一部として属性をマップしていた場合、SAML 経由で渡されません。
- Udemy BusinessのSCIM APIトークンの有効期間はおよそ2年間です。管理者には以下を知らせる通知が送信されます:
- トークンの有効期限の30日前
- トークンの有効期限後
目次
- SCIMプロビジョニングの機能
- 始める前に
- 設定手順
- ユーザーをライセンスプールに割り当てる
- 既存の統合をBearerトークンに移行して、Oktaで新しいUdemy Businessアプリを利用できるようにする
SCIMプロビジョニングの機能
対応しているSCIMプロビジョニング機能は以下の通りです:
- Oktaからユーザーをプロビジョニングする
- OktaでUdemy Businessアプリを割り当てられたユーザーは、Udemy Businessでプロビジョニングされます。
- メモ: OktaからSCIMプロビジョニングされたユーザーは、自動生成の招待メールが届きません。
- プロフィール更新のプッシュ
- OktaからUdemy Businessに登録しているユーザーのプロフィールを更新すると、Udemy Businessにプッシュ(送信)されます。
- ユーザーの非アクティブ化のプッシュ
- Oktaでユーザーを非アクティブ化するか、アプリケーションへのアクセスを無効にすると、Udemy Businessのユーザーも非アクティブ化され、すべてのグループから削除されます。
- メモ: 非アクティブ化されたユーザーは、レポート目的または将来の再アクティブ化のために学習データを保持します。 SCIMで管理されている非アクティブ化されたユーザーを完全に削除するには、まずそのユーザーのSCIM接続を切断する必要があります。これについては、Udemy Businessサポートがお手伝いいたします。
- ユーザーの再アクティブ化
- Oktaを通じてそのユーザーにアプリを再割り当てすることで、ユーザーをUdemy Businessで再アクティブ化できます。
- メモ: 再アクティブ化されたユーザーには、再アクティブ化されたことを伝える自動生成メールがUdemyから送信されます。
- グループプッシュ
- グループとそのメンバーの情報はUdemy Businessにプッシュされます。
- メモ: 管理できるのはOktaからプッシュされたグループに限られます。Udemy Businessで作成されたグループの情報は送信されません。
- ユーザーとグループをインポート
- Oktaで新しいUdemy Businessアプリに切り替えると、既存の統合から新しい統合にユーザーとグループをインポートできます。
SCIM管理されているユーザーには、名前とメールの横に灰色のSCIMフラグが表示されます。 SCIMがプロビジョニング済みのステータスを持つユーザーは、初めてログインするまでアクティブなライセンスを消費しません。
始める前に
OktaのSSOを有効にしていない場合、またはチームによる手動設定でSSOをセットアップした場合は、まずこちらでOkta SSO設定手順を完了してください。
- 新しいSSOとSCIMの設定が完了するまでは、OktaダッシュボードにあるUdemy Businessのタイルを隠しておくことで、SSOのサービス停止を避けることができます。
- Application Visibility(アプリケーションの可視性)の横のDo not display application icon to users(アプリケーションのアイコンをユーザーに表示しない)をクリックします。
設定手順
1. Udemy Businessアプリで全般タブを選択し、以下のフィールドに入力します。
- サブドメイン: あなたのUdemy Businessのドメイン名
- ドメイン: udemy.com
- Audience URI(SP Entity ID): PingConnect
2. Provisioning(プロビジョニング)タブをクリックし、Configure API integration(API統合の設定) をクリックします。
3. Enable API Integration(API統合を有効にする)を選択してAPIトークンを追加します。
Udemy BusinessアカウントでManage(管理) > Settings(設定) > Provisioning (SCIM)(プロビジョニング(SCIM))に移動すると、APIトークンを生成または表示できます。
4. Test API Credentials(API認証情報のテスト)をクリックすると、SSO統合が完了したことを示すメッセージが表示されます。メッセージが表示されない場合は、エラーメッセージを添えてUdemy Businessサポートチームまでご連絡ください。
5. Save(保存)をクリックすると、Provisioning(プロビジョニング)設定ページにリダイレクトされます。
6.Settings(設定) > To App(アプリへ)でEdit(編集)をクリックして、各機能を有効化します。
すべての機能を使用する場合は、Create Users(ユーザーの作成)、Update User Attributes(ユーザー属性の更新)、Deactivate Users(ユーザーの非アクティブ化)を有効にすることをお勧めします。Save(保存)をクリックします。
7.(任意)Profile attributes(プロフィール属性): Oktaアカウントで、Directory(ディレクトリ)> Profile Editor(プロファイルエディタ)→ アプリケーションの名前に移動します。
8.Profile Editor(プロファイルエディタ)ページで、Add Attribute(属性を追加)をクリックします。
9.Add Attribute(属性を追加)ページで、次の属性を以下のフィールドに入力します。
属性名 データ型 表示名 変数名 外部名 外部名前空間 eNUM licenseTypes
文字列配列 License Types licenseTypes licenseTypes urn:ietf:params:scim:schemas:extension:udemy:2.0:User 有効 licensePoolName
ストリング License Pool Name licensePoolName licensePoolName urn:ietf:params:scim:schemas:extension:udemy:2.0:User externalId
ストリング Udemy External ID UdemyExternalId externalId urn:ietf:params:scim:schemas:core:2.0:User employeeNumber
ストリング employeeNumber employeeNumber employeeNumber urn:ietf:params:scim:schemas:extension:enterprise:2.0:User title
ストリング タイトル Udemytitle タイトル urn:ietf:params:scim:schemas:core:2.0:User costCenter
ストリング costCenter costCenter costCenter urn:ietf:params:scim:schemas:extension:enterprise:2.0:User organization
ストリング organization organization organization urn:ietf:params:scim:schemas:extension:enterprise:2.0:User division
ストリング 部門 division division urn:ietf:params:scim:schemas:extension:enterprise:2.0:User department
ストリング 部門 department department urn:ietf:params:scim:schemas:extension:enterprise:2.0:User manager_scim_id
object マネージャーSCIM ID manager_scim_id manager_scim_id urn:ietf:params:scim:schemas:extension:enterprise:2.0:User 10.Add Attribute(属性を追加)またはSave and Add Another(保存して別の属性を追加)のいずれかをクリックします。
属性を追加すると、以下のような内容がプロフィールに追加されているのが確認できます。
ユーザーをライセンスプールに割り当てる
ユーザーをライセンスプールに割り当てるには:
1. Okta管理ページの左側で、Application(アプリケーション) → Application(アプリケーション)に移動します。
2. 対象のアプリケーションを選択します。
3.割り当てタブに移動します。
4.Assign(割り当て)をクリックし、Assign to People(ユーザーに割り当て)またはAssign to Groups(グループに割り当て)のいずれかを選択します。
5. そのユーザーまたはグループの属性を入力します。
ユーザー属性:
グループ属性:
6.Save and Go Back(保存して戻る)をクリックします。
これで、ライセンスプール名の属性を持つユーザーまたはグループが追加され、指定したライセンスプールにユーザーが割り当てられます。7.Assignments(割り当て)タブに移動して、特定のユーザーまたはグループ全体にUdemy Businessを割り当てます。
割り当てられたユーザーは、追加後に自動でプロビジョニングされます。プロフィールが変更されると自動で修正され、割り当てから削除されると自動で非アクティブ化されます。
8.Push Groups(グループをプッシュ)タブに移動して、 グループとメンバーの情報をUdemy Businessに送信します。
9.+ Push Groups(+ グループをプッシュ)をクリックして、Udemy Businessにプッシュするグループを選択します。
個々のグループを選択することも、自動ルールを作成することもできます。
10. グループの検索基準を選択し、Udemy Businessに送信するグループに関する必要情報を入力します。
11. グループを選択した後、Push group memberships immediately(グループメンバーの情報を同時にプッシュする)を選択して、選択したグループの情報だけでなく所属メンバーの情報も送信されるように設定し、Save(保存)をクリックします。
12. Udemy Businessに送信するすべてのグループについて以上の手順を繰り返します。
メモ: Udemy Businessでは、セットアップ後にSCIM管理のユーザーまたはグループを変更することはできません。
既存の統合をBearerトークンに移行して、Oktaで新しいUdemy Businessアプリを利用できるようにする
すでにOktaでSCIMプロビジョニングを設定済みで、OktaでUdemy Businessアプリケーションを使用したい場合は、まずBearerトークン認証に移行する必要があります。統合を移行するには、以下の手順に従います。
ステップ1: Udemy Businessでトークンを生成する
1. Udemy Business管理者アカウントで、Manage(管理)> Settings(設定)> Provisioning (SCIM)(プロビジョニング(SCIM))に移動します。
すでにユーザー名とパスワードに基づくOkta統合がある場合は、ダッシュボードにその認証情報が表示されます。
2. Generate token(トークンを生成)をクリックすると、SCIM統合用のBearerトークンを生成するかどうかを確認するモーダルが表示されます。
- 確認すると、以前の認証情報は、SCIMプロビジョニング用には表示されなくなりますが、他の既存の統合(例: 学習管理システム、学習アクティビティ用の公開APIなど)では引き続き有効です。
結果
生成が完了すると成功メッセージが表示され、BearerトークンがProvisioning SCIM(プロビジョニングSCIM)ページに表示されます。Copy(コピー)をクリックすると、Okta設定用にBearerトークンをコピーできます。
ページを更新すると成功メッセージは消え、ドロップダウンオプションがOkta(レガシー)からOktaに変更されます。
ステップ2: Oktaで統合を更新する
移行を完了するには、Oktaで統合を更新する必要があります。
1. Okta管理者アカウントで、Applications(アプリケーション)> Application(アプリケーション)> Browse App Catalog(アプリカタログを表示)に移動し、Udemy Businessを検索します。
2. 統合を追加して、Subdomain(サブドメイン)、Domain(ドメイン)、Audience URI(SP Entity ID)などの詳細を入力します。
3. Provisioning(プロビジョニング)タブで、Enable API integration(API統合を有効にする)をクリックします。
4. API Token(APIトークン)の入力を求められたら、Udemy BusinessからコピーしたBearerトークンを貼り付けます。
5. Test API Credentials(API認証情報をテスト)をクリックして接続をテストします。
テストが成功したら、Save(保存)をクリックして完了できます。
6. Provisioning(プロビジョニング)タブで、Settings(設定)> To App(アプリへ)に移動し、すべての種類のプロビジョニングが有効になっていることを確認します。
- Create Users(ユーザーを作成)
- Update User Attributes(ユーザー属性を更新)
- Deactivate Users(ユーザーを非アクティブ化)
メモ: このステップを完了すると、新しいUdemy Businessアプリケーションで行ったすべての変更がUdemy Businessのプロビジョニングに反映されます。
結果
新しいUdemy Businessアプリケーションの基本的な統合が完了しました。
ステップ3: 古いUdemy Businessアプリケーションを管理する
新しい統合を作成した後、次の2つのオプションから選択する必要があります。
オプション1: 古い統合を無効にする
- メリット: 情報源を1つにまとめられるため、新しい統合で行った変更が確実に反映されます。
- デメリット: ユーザーがUdemy BusinessでSSOを使ってログインできなくなります。
オプション2: 古い統合をそのまま維持する
- メリット: ユーザーがUdemy Businessを利用する際にダウンタイムが発生しません。
- デメリット: 誰かが古い統合に変更を加えると、その変更が新しい統合を上書きしてしまいます。移行を慎重に管理し、他の管理者に古い統合でユーザーやグループに変更を加えないよう知らせる必要があります。
ステップ4: 新しい統合にユーザーをインポートする
新しい統合にユーザーをインポートする方法は2つあります。
- 自動インポート
- 確認して自分でインポート
インポートの所要時間はアプリケーション内のユーザー数によって異なり、数秒から数分かかります。
オプション1: ユーザーを自動インポートする
ユーザーを自動インポートするには:
- 新しいUdemy BusinessアプリケーションのProvisioning(プロビジョニング)タブに移動します。
- 左側で、To Okta(Oktaへ)を選択します。
-
User Creation & Matching(ユーザーの作成と一致)設定の下に、自動的にインポートして割り当てを確認するための次のオプションが表示されます。
- インポートされたユーザーは以下の場合にOktaユーザーと完全に一致:
- Email matches(メールの一致)を選択する
- 部分一致を許可する:
- Partial match on first and last name(名と姓の部分一致)を選択する
- 一致したユーザーを確認する:
- Auto-confirm exact matches(完全一致を自動確認)を選択する
- Auto-confirm partial matches(部分一致を自動確認)を選択する
- Confirm new users(新しいユーザーを確認)設定で:
- Auto-confirm new users(新しいユーザーを自動確認)を選択する
- インポートされたユーザーは以下の場合にOktaユーザーと完全に一致:
4. Save(保存)をクリックします。
5. Udemy Businessアプリで、Import(インポート)タブに移動します。
6.Import Now(今すぐインポート)をクリックします。
オプション2: 確認して自分でインポートする
ユーザーを自分でインポートするには:
- Udemy Businessアプリで、Import(インポート)タブに移動します。
- Import Now(今すぐインポート)をクリックします。
ステップ5: 新しい統合にグループをインポートする
メモ: グループを追加する前に、すべてのユーザーを新しい統合に追加する必要があります。
新しい統合にグループをインポートするには:
1. 新しいUdemy Businessアプリで、Push Groups(グループをプッシュ)タブに移動します。
2. Refresh App Groups(アプリグループを更新)をクリックします。
3. Push Groups(グループをプッシュ)> Find groups by name(名前でグループを検索)を選択します。
4. 左側で、By name(名前で)をクリックし、Link Group(グループをリンク)オプションを使用します。
5. Save(保存)またはSave & Add Another(保存して別のグループを追加)をクリックし、残りのグループについても同じ手順を繰り返します。
-
Udemy SCIM APIでSCIMプロビジョニングを設定する
記事を読む概要
クロスドメインID管理システム(SCIM)は、ユーザーとグループのプロビジョニングやプロビジョニング解除、ユーザーデータとグループデータの更新をお客様のIDプロバイダー(IdP)で行い、Udemy Businessアカウントに自動で反映するための標準APIです。SCIMは、Okta、Azure AD、OneLoginなど多くのIDプロバイダーが採用しています。 Udemy Business SCIM APIは、その他のIDプロバイダーや独自に構築されたツールでも利用できます。
所属する組織が以下のIDプロバイダーのうちいずれかを使用している場合は、以下のSCIM設定ガイドを参照してください。
SCIMでは、JSON形式のデータによる標準化されたREST APIが使用されます。Udemy Businessは、SCIM規格バージョン2.0をサポートしています。このAPIは、エンタープライズプランに加入しているすべてのお客様にご利用いただけます。
Udemy Business SCIM APIでは、以下の機能をサポートしています。
- ユーザーのプロビジョニング
- ユーザーのプロビジョニング解除(非アクティブ化)
- メールアドレスの変更
- ユーザーの詳細情報の変更
- グループのプロビジョニング
- ライセンスを割り当てる
- ユーザーをライセンスプールに割り当てる
- グループへのユーザーの追加/削除
メモ: Udemy BusinessのSCIM APIトークンの有効期間はおよそ2年間です。管理者には以下を知らせる通知が送信されます:
- トークンの有効期限の30日前
- トークンの有効期限後
SCIMプロトコルの説明
SCIMプロトコルは、ウェブ上でIDデータのプロビジョニングと管理を行うためのアプリケーションレベルのRESTプロトコルです。クライアントサーバー方式のプロトコルであり、クライアントがIDプロバイダー(IdP)で、サーバーがUdemy Businessです。
基本のフローは次のとおりです。
- お客様がIdPでユーザーにUdemy Businessへのアクセスを許可すると、IdPからUdemy Businessにこのユーザーがデータベースに存在するかどうかをチェックするためのリクエストが送信されます。発行されるのは、userNameまたはemailなどの属性によるユーザー検索リクエストです。
- ユーザーが存在しない場合は、IdPからユーザーの作成リクエストが送信されます。
- ユーザーが存在する場合は、IdPからユーザーの更新リクエストが送信されます。
- Udemy Businessへのアクセスが取り消された場合は、IdPからUdemy Businessのデータベースでユーザーを非アクティブ化するためのリクエストが送信されます。
- IdPからは、ユーザーの詳細情報を変更するためのリクエストも送信可能です。
APIへのアクセス方法
SCIM APIに接続するための認証資格情報を取得するには、Udemy Businessアカウントで管理 -> 設定 -> プロビジョニング(SCIM)ページを開き、SCIM統合を設定します。このページにアクセスできるのは管理者のみです。
設定を開始をクリックします。
次に、プロバイダーを選択、カスタムの順に選択します。
トークンを作成するをクリックします。
この画面で、コピーをクリックして、Bearerトークンをクリップボードにコピーします。
リクエストには、次のようにBearerトークンのAuthorization HTTPヘッダーを指定します。
GET /scim/v2/Users HTTP/1.1
Host: myorganization.udemy.com
Accept: application/scim+json
Authorization: Bearer <ここにBearerトークンを入力>
Content-Type: application/scim+jsonUdemy Business SCIM APIにはHTTPプロトコルが使用されており、セキュアなHTTPS接続でのみ利用可能です。
APIのベースURLは以下のとおりです: https://<yoursubdomain>.udemy.com/scim/v2/.
Udemy Business SCIM APIと接続するアプリケーションを構築する場合は、この文書の末尾に付記されているSCIMのRFC文書を参照してください。Udemy Business SCIM APIの実装は、この規格に準拠しています。
レート制限
Udemy Businessは、標準のHTTPレート制限プロトコルに従い、SCIM APIにレート制限を適用しています。リクエストがレート制限に達した場合、HTTP 429レスポンスが返されます。その際は、Retry-Afterヘッダーに指定された時間を待ってから再試行してください。
SCIM APIエンドポイント
情報エンドポイント
これらのエンドポイントは情報であり、クライアントの設定に使用します。認証は要求されません。したがって、これらのエンドポイントにアクセスする際に Authorizationヘッダーを指定する必要はありません。
GET /ServiceProviderConfigサポートされているメソッドなど、Udemy Business SCIMの実装に関する詳細情報を返します。
GET /SchemasUdemy Business SCIMの実装でサポートされているスキーマについての情報を返します。サポートされているスキーマは、UsersとGroupsです。
GET /Schemas/UsersUserリソースでサポートされているすべての属性を返します
GET /Schemas/Groups
Groupリソースでサポートされているすべての属性を返します。
Userエンドポイント
これらのエンドポイントを使用すれば、ユーザーのリスト、属性によるフィルタリング、新規ユーザーの追加、ユーザー情報の更新、ユーザーの非アクティブ化や匿名化を実行できます。
SCIM APIがすべてのユーザーを返さない場合は、Udemy Businessサポートにお問い合わせください。
サポートされている属性
SCIM属性 必須か 解説 emails[type=”work”]]['value’]はい ユーザーのメールアドレス。一意でなければなりません userName可能 IdPでのuserName。一意でなければなりません。 アクティブ可能 ユーザーを非アクティブ化/再アクティブするためのフラグ externalId可能 IdPにおけるユーザーのexternalId。一意でなければなりません。 urn:ietf:params:scim:schemas:extension:
enterprise:2.0:User:employeeNumberはい EnterpriseSchemaからemployeeNumberフィールドを返し、external_idフィールドとして保存します。 costCenterいいえ ユーザーのコストセンターを識別する名前またはコード。 departmentいいえ ユーザーが所属する部署の名前 divisionいいえ ユーザーが所属する部門名。 name.givenNameいいえ ユーザーのファーストネーム。必須ではありませんが、ユーザーの特定に役立つため、これらの属性を常に指定することをお勧めします。 name.familyNameいいえ ユーザーの姓。必須ではありませんが、ユーザーの特定に役立つため、これらの属性を常に指定することをお勧めします。 name, { givenName, familyName }不可 ユーザーの氏名。必須ではありませんが、ユーザーの特定に役立つため、これらの属性を常に指定することをお勧めします。 title不可 Userの肩書。例:「シニアエンジニア」。 licenseTypesいいえ コンマ区切りのライセンスタイプの一覧。
許容される値:
- エンタープライズ
- Enterprise, Pro
licensePoolNameいいえ ライセンスプール名。 managerがオブジェクトの場合は
manager.value、managerが値を直接保持している場合はmanagerを使用しますいいえ
ユーザーのマネージャーのSCIM ID
organization
いいえ ユーザーが所属する組織名。
注意:このリストに記載されている以外の属性を指定した場合は、無視されます。GET /Users
ページ分割されたユーザーリストを返します。デフォルトでページ当たり12ユーザーです。で次のパラメータを渡すことができます
count
および
startIndex
結果セットをページネーションするためのパラメータを指定できます。一例をご紹介します。
GET /scim/v2/Users?startIndex=1&count=100 HTTP/1.1
Host: myorganization.udemy.com
Accept: application/scim+json
Authorization: Bearer <ここにBearerトークンを入力>startIndex- は、現在のリスト結果セットの冒頭の結果に適用される1から始まるインデックス(オフセット)
-
countは、返されるリストの1ページに表示するリソース数(上限)。1回のリクエストで取得できるユーザー数は1,000人未満です。この項目を省略すると、デフォルトの12になります。
リクエスト例
GET https://demo.udemy.com/scim/v2/Users
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"totalResults": 18,
"startIndex": 1,
"Resources": [
{
"id": "KwLzN3",
"externalId": "00u3mlhj4x1E482sK5d7",
"userName": "firstName.lastName@domain.com",
"name": {
"givenName": "firstName",
"familyName": "lastName",
"formatted": "firstName lastName"
},
"emails": [
{
"value": "firstName.lastName@domain.com",
"type": "work",
"primary": true
}
],
"title": "",
"active": true,
"groups": [
{
"value": "NZOaw",
"display": "Group Test",
"$ref": "https://demo.udemy.com/scim/v2/Groups/NZOaw"
},
{
"value": "dn1K8",
"display": "NewGroup2",
"$ref": "https://demo.udemy.com/scim/v2/Groups/dn1K8"
}
],
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"meta": {
"resourceType": "User",
"location": "https://demo.udemy.com/scim/v2/Users/KwLzN3",
"created": "2022-01-19T01:11:59Z",
"lastModified": "2024-11-22T21:58:48Z"
},
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "64e63"
}
},
[...]
],
"itemsPerPage": 12
}GET /Users?filter=
このエンドポイントは、特定の属性でユーザーをフィルタリングするために使用します。たとえば、userName属性を使えば次のような検索が可能です。
GET /Users?filter=userName eq "example..name”
注意: URLパラメーターはURLエンコードが必要です。この例では次のようになります:
GET /Users?filter=userName%20eq%20%22example.name%22これにより、ユーザーリソースのリストが返されます。結果がない場合は、空のリストが返されます。
GET Users?filter=groups.value eq "{SCIM_Group_ID}"これにより、このSCIMグループに所属するすべてのユーザーが返されます
サポートされているフィルターは以下の通りです。
userName
externalID
emails[type eq=”work”]
groupsサポートされている演算子は以下の通りです。
and
eqレスポンス:
- 成功した場合は、HTTPステータスコード200とエンティティのリスト
- サポートされていないフィルターが指定された場合は、HTTPステータスコード501
POST /Users
このエンドポイントは、Udemy Businessで新規ユーザーを作成(プロビジョニング)するために使用します。
レスポンスには
ID
属性が含まれます。これは、その後のあらゆるリクエストでこのユーザーを参照するために使用します。
注意:
- この方法で作成された新規ユーザーは、彼らが初回サインインするまでライセンスを消費 しません。
- このユーザーにすでに保留中の招待状がある場合は、この時点で使用されます。
ユーザーは、招待状に指定された内容にしたがってグループに追加され、適切な役割やコースを割り当てられます。 - すでにUdemy Businessに存在しているユーザーを新規作成しようとした場合は、そのユーザーがSCIMの管理下に入ります( 「ユーザー管理」ページに小さなリンクアイコンが表示されます)。ユーザーのステータスやライセンスの使用状況に変更は生じません。ユーザーがアクティブな場合は 引き続きアクティブであり、非アクティブ化されている場合は非アクティブ化されたままです。
リクエスト例
POST https://demo.udemy.com/scim/v2/Users
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"active": true,
"emails": [
{
"primary": true,
"type": "work",
"value": "demo.user@test.com"
}
],
"externalId" : "externalIdValue",
"meta": {
"resourceType": "User"
},
"userName": "DemoTest",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "externalIdValue"
},
"name": {
"familyName": "Test",
"formatted": "formatted",
"givenName": "Demo"
}
}レスポンス例
{
"id": "MPD698",
"name": {
"givenName": "Demo",
"familyName": "Test",
"formatted": "Demo Test"
},
"emails": [
{
"value": "demo.user@test.com",
"type": "work",
"primary": true
}
],
"title": "",
"active": true,
"groups": [],
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"meta": {
"resourceType": "User",
"location": "https://demo.udemy.com/scim/v2/Users/MPD698",
"created": "2024-12-27T22:00:25Z",
"lastModified": "2024-12-27T22:00:26Z"
},
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "externalIdValue"
},
"userName": "DemoTest",
"externalId": "externalIdValue"
}
レスポンス:
- 成功した場合は、HTTPステータスコード201とユーザーのリソース
- 組織に同じuserNameがすでに存在している場合は、HTTPステータスコード409
- リクエストが検証をパスしなかった場合は、HTTPステータスコード400とエラーの詳細情報を記したレスポンスボディ
GET /Users/<id>
このエンドポイントは、指定されたユーザーの詳細情報を取得するために使用されます。
ID上記リクエストのパラメーターには、SCIMでユーザーを作成した際に返されたか、既存のすべてのユーザーを一覧表示した際に示された一意の識別子を指定します。
レスポンス:
- 成功した場合は、HTTPステータスコード200とユーザーリソース
- ユーザーが見つからなかった場合は、HTTPステータスコード404
PUT /Users/<id>
このエンドポイントは、Udemy Businessのユーザー詳細情報の置き換え(上書き)に使用します。指定した場合、active属性を使用して、ユーザーを非アクティブ化や再アクティブ化できます。
リクエスト例:
PUT https://demo.udemy.com/scim/v2/Users/MPD698
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"id": "MPD698",
"userName": "demo.user@test.com",
"externalId": "NewExternalID",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "NewExternalID"
},
"name": {
"givenName": "demo",
"familyName": "user"
},
"emails": [
{
"value": "demo.user@test.com",
"type": "work",
"primary": true
}
],
"active": true
}レスポンス例
{
"id": "MPD698",
"name": {
"givenName": "demo",
"familyName": "user",
"formatted": "demo user"
},
"emails": [
{
"value": "demo.user@test.com",
"type": "work",
"primary": true
}
],
"title": "",
"active": true,
"groups": [],
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"meta": {
"resourceType": "User",
"location": "https://demo.udemy.com/scim/v2/Users/MPD698",
"created": "2024-12-27T22:00:25Z",
"lastModified": "2024-12-27T22:17:52Z"
},
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "NewExternalID"
},
"userName": "demo.user@test.com",
"externalId": "NewExternalID"
}
レスポンス:
- HTTPステータスコード200と更新されたユーザーリソース
- ユーザーが存在しない場合は、HTTPステータスコード404。
- 組織の所有者を非アクティブ化しようとした場合は、HTTPステータスコード400。
PATCH /Users/<id>
このエンドポイントは、Udemy Businessのシステムでユーザー詳細情報の一部分を更新する場合に使用します。ユーザーの一部の属性だけを変更できます。ユーザー全体を置き換えるPUTとは異なります。
active属性を含めた場合、ユーザーを非アクティブ化や再アクティブ化できます。
- 各リクエストのボディの「schemas」属性には必ず「urn:ietf:params:scim:api:messages:2.0:PatchOp」というURL値を指定します。
- HTTP PATCHリクエストのボディには「Operations」属性を必ず指定します。この値は1つ以上のPATCH操作の配列です。各PATCH操作オブジェクトには、必ず1つだけ「op」メンバーを指定して実行する処理を指示します。値には「add」、「remove」、「replace」の中の1つを記載できます。
- 「path」属性は空でもかまいませんが、その場合、「value」は{“path”: “value”}形式の辞書となります。
リクエスト例
PATCH https://demo.udemy.com/scim/v2/Users/MPD698
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:PatchOp"
],
"Operations": [
{
"op": "replace",
"path": "userName",
"value": "DemoUserName"
}
]
}レスポンス例
{
"id": "MPD698",
"name": {
"givenName": "demo",
"familyName": "user",
"formatted": "demo user"
},
"emails": [
{
"value": "demo.user@test.com",
"type": "work",
"primary": true
}
],
"title": "",
"active": true,
"groups": [
{
"value": "5ypNz",
"display": "NewGroup",
"$ref": "https://demo.udemy.com/scim/v2/Groups/5ypNz"
}
],
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:User",
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User"
],
"meta": {
"resourceType": "User",
"location": "https://demo.udemy.com/scim/v2/Users/MPD698",
"created": "2024-12-27T22:00:25Z",
"lastModified": "2024-12-27T22:17:52Z"
},
"urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
"employeeNumber": "NewExternalID"
},
"userName": "DemoUserName",
"externalId": "NewExternalID"
}
レスポンス:
- 成功した場合は、HTTPステータスコード200と更新されたユーザーのリソース
- ユーザーが見つからなかった場合は、HTTPステータスコード404
- 組織の所有者を非アクティブ化しようとした場合、または不正な操作を行った場合は、HTTPステータスコード400。
グループエンドポイント
サポートされている属性
SCIM属性 必須か コース解説 displayName可能 グループ名。すべてのUdemy Businessグループ内で一意でなければなりません。 externalId不可 IDプロバイダーによるグループのexternalId 注意:このリストに記載されている以外の属性を指定した場合は、無視されます。
GET /Groups
このエンドポイントは、プロビジョニングしたすべてのグループのページ分割されたリストを取得するために使用します。結果をページ分割するには、startIndexとcountの2つのクエリストリングパラメーターが必要です。
取得できるのはSCIMを使って作成したグループのみです。Udemy Businessで作成したグループは取得できません。
リクエスト例
GET https://demo.udemy.com/scim/v2/scim/v2/Groups
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:ListResponse"
],
"totalResults": 6,
"startIndex": 1,
"Resources": [
{
"id": "NZOaw",
"displayName": "Group Test",
"members": [
{
"value": "KwLzN3",
"display": "firstName lastName",
"type": "User",
"$ref": "https://demo.udemy.com/scim/v2/Users/KwLzN3"
},
{
"value": "eBmzpr",
"display": "user four",
"type": "User",
"$ref": "https://demo.udemy.com/scim/v2/Users/eBmzpr"
}
],
"externalId": null,
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"meta": {
"resourceType": "Group",
"location": "https://demo.udemy.com/scim/v2/Groups/NZOaw",
"created": "2024-08-23T22:26:48Z",
"lastModified": "2024-08-23T22:26:48Z"
}
},
[...]
],
"itemsPerPage": 12
}GET /Groups?filter=
このエンドポイントは、特定の属性でグループをフィルタリングするために使用します。たとえば、displayName属性を使えば次のような検索が可能です。
GET /Groups?filter=displayName eq "Marketing”
これにより、グループリソースのリストを取得できます。結果がない場合は、空のリストが返されます。
パラメーターはURLエンコードする必要があります。したがって、上記リクエストは次のようになります:
GET /Groups?filter=displayName%20eq%20%22Marketing%22サポートされているフィルターは以下の通りです。
displayName
externalId
Id
member.valueサポートされている演算子は以下の通りです。
and
eqレスポンス:
- 成功した場合は、HTTPステータスコード200とエンティティのリスト
- サポートされていないフィルターが使われた場合は、HTTPステータスコード501
POST /Groups
このエンドポイントは、Udemy Businessで新規グループを作成(プロビジョニング)するために使用します。
レスポンス:
- 組織にプロビジョニングされた同名のグループがすでに存在している場合は、HTTPステータスコード409が返されます。Udemy Businessでは409(Conflict)とともにuniquenessのscimTypeエラーコードが返されます。
- グループの作成に成功した場合は、グループの完全なレプリゼンテーションとHTTPステータスコード201(Created)とともに、作成されたグループリソースのURLを記したLocationヘッダーが返されます。
GET /Groups/<id>
このエンドポイントは、Udemy Businessのグループ詳細情報を取得するために使用します。
レスポンス:
- HTTPステータスコード200とグループリソース
- グループが見つからなかった場合は、HTTPステータスコード404
POST /Groups
このエンドポイントは、Udemy Businessで新規グループを作成(プロビジョニング)するために使用します。
警告: POSTまたはPUT/scim/v2/Groupsエンドポイントを使用してグループを作成する際、リクエストにmembers属性を含めないでください。指定されたメンバーは無視されます。ユーザーをグループに追加するには、まずグループを作成し、その後、PATCH /scim/v2/Groups に個別の呼び出しを行いますリクエスト例
https://demo.udemy.com/scim/v2/Groups
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"displayName": "Group1",
"externalId": "234523"
}レスポンス例
{
"id": "vREOw",
"displayName": "Group1",
"members": [],
"externalId": "234523",
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"meta": {
"resourceType": "Group",
"location": "https://demo.udemy.com/scim/v2/Groups/vREOw",
"created": "2025-01-15T22:24:54Z",
"lastModified": "2025-01-15T22:24:54Z"
}
}
PUT /Groups/<id>
このエンドポイントは、Udemy Businessのグループ詳細情報を置き換えるために使用します。
警告: POSTまたはPUT/scim/v2/Groupsエンドポイントを使用してグループを作成する際、リクエストにmembers属性を含めないでください。指定されたメンバーは無視されます。ユーザーをグループに追加するには、まずグループを作成し、その後、PATCH /scim/v2/Groups に個別の呼び出しを行います
リクエスト例
PUT https://demo.udemy.com/scim/v2/Groups/vREOw
{
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"displayName": "Group1",
"externalId": "MPD699"
}レスポンス例
{
"id": "vREOw",
"displayName": "Group1",
"members": [],
"externalId": "MPD699",
"schemas": [
"urn:ietf:params:scim:schemas:core:2.0:Group"
],
"meta": {
"resourceType": "Group",
"location": "https://demo.udemy.com/scim/v2/Groups/vREOw",
"created": "2025-01-08T21:12:53Z",
"lastModified": "2025-01-15T22:35:55Z"
}
}レスポンス:
- HTTPステータスコード200と更新されたグループリソース
- グループが存在しない場合は、HTTPステータスコード404。
PATCH /Groups/<id>
このエンドポイントは、Udemy Businessにおけるグループ詳細情報の部分的な更新を行うために使用します。
PATCHエンドポイントでは、さまざまな操作とその組み合わせが可能なため、他のエンドポイントよりも扱いにくい面があります。
リクエスト例
PATCH https://demo.udemy.com/scim/v2/Groups/5ypNz
{ "schemas":
["urn:ietf:params:scim:api:messages:2.0:PatchOp"],
"Operations":[
{
"op":"add",
"path": "members",
"value":[{
"display": "demo user",
"$ref":"https://demo.udemy.com/scim/v2/Users/MPD698",
"value": "MPD698"
}
]
}
]
}レスポンス例
204 No Content
- replaceは、特定の値を変更する操作です。Udemy Businessの場合は、グループ名かメンバーです。
- removeは、グループからメンバーを削除する操作です。
- addは、グループにメンバーを追加する操作です。
ルールは以下の通りです。
- たとえば、メンバーを「replace」する操作の場合、プロビジョニングされていないメンバーはグループから削除されません。
- PATCHリクエストは、操作数に関係なくアトミックなものとして扱われます。
インプットの検証は次の通りです。
- 各リクエストのボディの「schemas」属性には必ず「urn:ietf:params:scim:api:messages:2.0:PatchOp」というURL値を指定します。
- HTTP PATCHリクエストのボディには「Operations」属性を必ず指定します。この値は1つ以上のPATCH操作の配列です。各PATCH操作オブジェクトには、必ず1つだけ「op」メンバーを指定して実行する処理を指示します。値には「add」、「remove」、「replace」の中の1つを記載できます。
- 「path」属性は空でもかまいませんが、その場合、「value」は{“path”: “value”}形式の辞書となります。
- 「Remove」操作の場合は「members」パスが必要です。
- 「Add」操作の場合は「members」または「externalId」「path」が必須です。
- 「Replace」操作の場合は、「members」パスを指定できます。指定されていない場合、グループ名などのグループ詳細情報は変更されますが、メンバーは変更されません。
メモ:
- グループへのユーザーの割り当てと割り当て解除は非同期で行われます。そのため、変更はすぐにはUdemy Businessに反映されません。
- ネスト化されたグループはサポートしていないため、このリクエストでは無視されます。
レスポンス:
- 操作に成功した場合は、HTTPステータスコード204。
- グループが存在しない場合は、HTTPステータスコード404。
- 組織のメンバーでないユーザーにグループを割り当てようとした場合は、HTTPステータスコード404とエラー詳細情報。
- リクエストが検証をパスしなかった場合は、HTTPステータスコード400とレスポンスボディのエラー詳細情報。
DELETE /Groups/<id>
このエンドポイントは、Udemy Businessにおけるグループの削除またはプロビジョニング解除するために使用します。
ルールは以下の通りです。
- グループにプロビジョニングされていないメンバーがいる場合は、プロビジョニングされているメンバーがグループから削除され、「OrganizationSCIMGroup」レコードが消去されます。
レスポンス:
- 操作に成功した場合は、HTTPステータスコード204。
- グループが存在しない場合は、HTTPステータスコード404。
参考文献
-
承認済みのメールドメインを使って、ユーザーが「セルフサービス」でUdemy Businessを利用できるようにする方法
記事を読むUdemy Businessアカウントへのアクセスをユーザーに提供する方法は2つあります。シングルサインオン(SSO)を使う方法と管理者/グループ管理者から招待状を送付する方法です。
この機能は、招待手続きを使用する場合に利用できます。ユーザーは、管理者があらかじめ設定した承認済み/確認済みのメールアドレスドメインを組織アカウントのランディングページ(例: company.udemy.com)で入力することにより、自分宛に招待メールを送信することができます。
メールアドレスドメインを承認する方法
管理者は、設定内のメールドメインアクセスページで組織のUdemy Businessアカウントへの参加を承認するメールアドレスドメインを1つ以上指定できます。
この機能はチームプランでもエンタープライズプランでも利用できます。ただし、メールドメインアクセスページで承認メールドメインの設定ができるのは、アカウントの所有者または管理者に限られます。グループ管理者にはできません。
アカウントのランディングページのURLをユーザーと共有してサインアップする方法
Udemy BusinessアカウントのランディングページURLを、アクセス権を付与したい組織内のユーザーやグループに共有するには、Slack、メール、wiki、イントラネットなどを使うか、学習管理システム(LMS)にリンクを追加してください。
ユーザーは、組織アカウントのランディングページURLにアクセスして、登録用のメールアドレスを入力します。入力したメールアドレスが、管理者のあらかじめ設定した承認済みのメールドメインと合致していれば、登録できます。
メモ: 安全で信頼性の高いプラットフォームを維持するために、新しいアカウントに登録する際にはメール認証が必要です。問題が発生した場合は、トラブルシューティングの手順を確認してください。
ユーザーが承認済みのメールアドレスを入力すると、アカウントの確認を促すメッセージが画面に表示されます。
ライセンスの使用と確認
ユーザーがライセンスを申請するには、サインアップを完了する必要があります。
利用できるライセンスが不足している場合は、ユーザーに以下のメッセージが表示され、マネージャーかIT部門に問い合わせるよう促されます。
ユーザーはこの確認メールに含まれるリンクを使ってアカウント情報の確認をする必要があります。確認のためのリンクの期限は1時間*です。ユーザーは、アカウントの確認を終えると、名前、メールアドレス、パスワードを入力してサインアップすることが可能になります。
*シングルサインオン(SSO)/クロスドメイン管理用システム(SCIM)のユーザーには、この確認手続きはありません。
ユーザーの入力したメールアドレスが承認済みのメールドメインに合致しない場合は、以下のメッセージが表示され、そのユーザーは登録手続きに進むことができません。
利用できるライセンスが不足している場合は、以下のメッセージが表示され、マネージャーかIT部門に問い合わせるように促されます。
承認済みのメールドメインによる手続きに従って登録を完了したユーザーは、ユーザー管理の保留中の招待状画面に表示されます。ただし「承認済みメールによる招待」と付記されます。
以上の機能は、チームプランでもエンタープライズプランでも利用できますが、ユーザーアクセスページで承認済みメールドメインを設定できるのは、所有者と管理者に限られます。グループ管理者はこのページにアクセスできません。
SCIM(クロスドメインID管理システム)のプロビジョニング
-
Udemy SCIM Bearerトークンを更新する方法
記事を読む -
UdemyのSCIM APIでユーザーライセンスを管理する
記事を読む -
Entra ID(Azure AD)でSCIMプロビジョニングを設定する
記事を読む -
OneLoginでSCIMプロビジョニングを設定する
記事を読む -
SCIMでユーザーとグループの管理を自動化する方法
記事を読む -
OktaでSCIMプロビジョニングを設定する
記事を読む -
Udemy SCIM APIでSCIMプロビジョニングを設定する
記事を読む -
承認済みのメールドメインを使って、ユーザーが「セルフサービス」でUdemy Businessを利用できるようにする方法
記事を読む