セルフ・サービスを使用したSMSファクタによるMFAへの登録
このユースケースでは、SMSファクタを使用したマルチファクタ認証(MFA)でのセルフサービス登録に、アイデンティティ・ドメインREST APIを使用するステップ・バイ・ステップの例を示します。
idm-samples GitHubリポジトリ内のidcs-rest-clientsフォルダから、アイデンティティ・ドメイン認証ユースケース・サンプル・コレクションおよびグローバル変数ファイルをダウンロードし、Postmanにインポートします。
前提条件のステップとして、これらのステップを実行する前にMEトークンを取得する必要があります。MEトークンの取得の詳細は、「認証APIを使用したアクセス・トークンの生成」を参照してください。
Step1: SMSファクタを使用したセルフサービス登録の作成
このステップでは、/admin/v1/MyAuthenticationFactorEnroller
エンドポイントに対するPOSTリクエストでSMS登録を開始します。クライアントには次の属性が含まれている必要があります:
value
: ユーザーIDを定義します。{{HOST}}/admin/v1/Me
にGETコールを実行して、"id"値を取得できます。displayName
: デバイスの表示名を定義しますcountryCode
: SMSテキストが送信される電話番号の国コードを定義しますphoneNumber
: SMSテキストが送信される電話番号を定義します
リクエストの例
JSON形式のPOSTリクエスト本文のコンテンツの例を次に示します:
{
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorEnroller"
],
"user": {
"value": "c810ff4522eb437abac013291c1984d1"
},
"displayName": "Joe's Personal Phone",
"countryCode": "+44",
"phoneNumber": "1122334455",
"authnFactors": [
"SMS"
]
}
レスポンスの例
次の例に、レスポンスボディーの内容を JSON形式で示します。
{
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorEnroller"
],
"user": {
"value": "c810ff4522eb437abac013291c1984d1",
"$ref": "https://example.identitycloud.com/admin/v1/Users/c810ff4522eb437abac013291c1984d1"
},
"displayName": "Joe's Personal Phone",
"countryCode": "+44",
"phoneNumber": "XXXXXXX455",
"authnFactors": [
"SMS"
],
"meta": {
"resourceType": "MyAuthenticationFactorEnroller",
"location": "https://example.identitycloud.com/admin/v1/MyAuthenticationFactorEnroller"
},
"deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
"requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179"
}
レスポンスでは、次のステップでdeviceId
およびrequestId
を渡す必要があります。
エラー・レスポンスの例
userId
が無効な場合のJSON形式のエラー・メッセージの例を次に示します。400 HTTPレスポンス・コードが返されます。 {
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:Error",
"urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error"
],
"detail": "AuthenticationFactorEnroller.user references a User with ID 1fa35f74491d44ef5a7cc25bfdb1c8b1c that does not exist.",
"status": "400",
"urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error": {
"messageId": "error.common.validation.invalidReferenceResource"
}
}
phoneNumber
が正しくない場合の JSON形式のエラーメッセージの例を次に示します。400 HTTPレスポンス・コードが返されます。
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:Error",
"urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error"
],
"detail": "Your phone number +91123 is not valid.",
"status": "400",
"urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error": {
"messageId": "error.ssocommon.auth.invalidPhoneNumber",
"additionalData": {
"params": "+91123",
"msgId": "error.ssocommon.auth.invalidPhoneNumber"
}
}
}
ステップ2: SMSによるOTPを使用したセルフサービス登録の開始
このステップでは、POSTリクエストでSMS経由でOTPを/admin/v1/MyAuthenticationFactorInitiator
エンドポイントに送信するようにリクエストします。クライアントには次の属性が含まれている必要があります:
requestId:
ステップ1のレスポンスで受信
deviceId:
ステップ1のレスポンスで受信
userName:
ユーザーのユーザー名
リクエストの例
JSON形式のPOSTリクエスト本文のコンテンツの例を次に示します:
{
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorInitiator"
],
"deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
"requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179",
"userName": "jbloggs",
"authFactor": "SMS"
}
レスポンスの例
JSON形式のレスポンスのコンテンツの例を次に示します:
{
"deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
"requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179",
"authFactor": "SMS",
"userName": "jbloggs",
"displayName": "Joe's Personal Phone",
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorInitiator"
]
}
OTPコードはSMSを使用してユーザーのモバイル・デバイスに送信されます。レスポンスでは、次のステップでdeviceId
およびrequestId
を渡す必要があります。
2a.セルフサービス登録リクエストの開始によるSMSによるOTP再送信
ユーザーがOTPを再送信する場合は、ステップ2で説明したのと同じペイロードをサーバーに再送信する必要があります。
リクエストの例
JSON形式のPOSTリクエスト本文のコンテンツの例を次に示します:
{
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorInitiator"
],
"deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
"requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179",
"userName": "jbloggs",
"authFactor": "SMS"
}
レスポンスの例
JSON形式のレスポンスのコンテンツの例を次に示します:
{
"deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
"requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179",
"authFactor": "SMS",
"userName": "jbloggs",
"displayName": "Joe's Personal Phone",
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorInitiator"
]
}
OTPコードはSMSを使用してユーザーのモバイル・デバイスに送信されます。レスポンスでは、次のステップでdeviceId
およびrequestId
を渡す必要があります。
ステップ3: OTPを使用したセルフサービス登録の検証
このステップでは、/admin/v1/MyAuthenticationFactorValidator
エンドポイントに対するPOSTリクエストでユーザーのSMS登録を検証します。
クライアントには次の属性が含まれている必要があります:
otpCode:
ユーザーがデバイスで受信したコード-
requestId:
ステップ2のレスポンスで受信 deviceId:
ステップ2のレスポンスで受信
リクエストの例
次の例に、JSON形式のPOSTリクエストのコンテンツを示します:
{
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorValidator"
],
"deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
"requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179",
"otpCode": "191224",
"authFactor": "SMS",
"scenario": "ENROLLMENT"
}
レスポンスの例
JSON形式のレスポンスのコンテンツの例を次に示します:
{
"authFactor": "SMS",
"deviceId": "92142250e2ab4608b5c6532eb73e3d7c",
"requestId": "a0a7f9bf-13a8-43f3-bcc7-2087dc3f7a18o-o1548346179",
"scenario": "ENROLLMENT",
"status": "SUCCESS",
"displayName": "Joe's Personal Phone",
"schemas": [
"urn:ietf:params:scim:schemas:oracle:idcs:AuthenticationFactorValidator"
],
"mfaStatus": "ENROLLED",
"mfaPreferredDevice": "2b27b8c072d64b899d41c8470acea32a",
"mfaPreferredAuthenticationFactor": "SMS",
"securityQuestionsPresent": false,
"devicesCount": 3,
"emailFactorEnrolled": true
}
mfaStaus:"ENROLLED"
は、ユーザーがMFAに登録したことを示します。mfapreferredAuthenticationFactor
属性は、優先メソッドとして設定されたファクタを示します。この例ではSMSです。最初の登録済ファクタがSMSと異なる場合、この値は異なる可能性があります。
エラー・レスポンスの例
OTPが正しくない場合のJSON形式のエラー・メッセージの例を次に示します。401 HTTPレスポンス・コードが返され、登録に失敗します。
{
"schemas": [
"urn:ietf:params:scim:api:messages:2.0:Error",
"urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error"
],
"detail": "Invalid passcode.",
"status": "401",
"urn:ietf:params:scim:api:oracle:idcs:extension:messages:Error": {
"messageId": "error.ssocommon.auth.invalidPasscode"
}
}