次の方法で共有


ネイティブ認証 API リファレンス

適用対象: 次の内容が外部テナントに適用されることを示す白いチェック マーク記号が付いた緑の円。 外部テナント (詳細)

Microsoft Entraの native authentication を使用すると、ブラウザーに認証を委任する代わりに、クライアント アプリケーションでアプリのユーザー インターフェイスをホストできるため、ネイティブに統合された認証エクスペリエンスが得られます。 開発者は、サインイン インターフェイスの外観を完全に制御できます。

この API リファレンス記事では、フローを実行するために生の HTTP 要求を手動で行うときにのみ必要な詳細について説明します。 ただし、この方法は推奨しません。 そのため、可能なときは、Microsoft が構築し、サポートしている認証 SDK を使用します。 ネイティブ認証 SDK の詳細を確認します。 API エンドポイントの呼び出しが成功すると、ユーザーを識別するための ID トークン と、保護された API を呼び出すための アクセス トークン の両方を受け取ります。 API からの応答はすべて JSON 形式です。

Microsoft Entraのネイティブ認証 API では、次の 2 つの認証フローのサインアップとサインインがサポートされています。

  • メールとパスワード。メールとパスワードによるサインアップとサインイン、およびセルフサービス パスワード リセット (SSPR) をサポートします。

  • メールのワンタイム パスコード。メールのワンタイム パスコードを使用したサインアップとサインインをサポートします。

現在、ネイティブ認証 API エンドポイントは、クロスオリジン リソース共有 (CORS) をサポートしていません。

前提条件

  1. Microsoft Entra外部テナント。 外部テナントをまだ作成していない場合は、ここで作成してください

  2. まだ行っていない場合は、Microsoft Entra管理センターでアプリケーションを登録します。 次のことを確認します。

  3. まだ行っていない場合は、Microsoft Entra管理センターでユーザー フローを作成します。 ユーザー フローを作成するときは、必要に応じて構成したユーザー属性を書き留めます。これらの属性は、アプリの送信Microsoft Entra想定される属性です。

  4. アプリの登録をユーザー フローに関連付けます

  5. サインインフローでは、 顧客ユーザーを登録し、それを使ってフローをテストします。 または、サインアップ フローを実行した後に、このテスト ユーザーを取得できます。

  6. SSPR フローの場合は、顧客テナント内の顧客ユーザーに対して セルフサービス パスワード リセットを有効 にします。 SSPR は、パスワードの認証方式のメールを使用する顧客ユーザーが利用できます。

  7. メールアドレスとパスワードでサインインしたユーザーもユーザー名とパスワードでサインインできるようにしたい場合は、「 別名またはユーザー名でサインイン 」記事の手順をご利用ください。

    1. サインインでユーザー名を有効にします
    2. 管理センターでユーザー名を持つユーザーを作成するか、ユーザー名追加して既存のユーザーを更新します。 または、Microsoft Graph API を使用して、ユーザーの作成と更新を自動的に行うこともできます。
  8. 顧客に多要素認証 (MFA) を適用するには、「 アプリに多要素認証 (MFA) を追加して サインイン フローに MFA を追加する」の手順を使用します。 ネイティブ認証では、MFA の 2 番目の要素として電子メール ワンタイム パスコードと SMS がサポートされます。

継続トークン

サインイン、サインアップ、または SSPR エンドポイントを呼び出すたびに、応答には 継続トークンが含まれます。 このトークンは、現在のフローを一意に識別し、エンドポイント全体の状態Microsoft Entra ID維持できるようにします。 そのフロー内の後続のすべての要求にトークンを含めます。 これは限られた時間だけ有効であり、同じフロー内の後続の要求にのみ使用できます。

サインアップのためのAPI参照

いずれかの認証方法でユーザーのサインアップ フローを完了するために、アプリでは、/signup/v1.0/start/signup/v1.0/challenge/signup/v1.0/continue/token の 4 つのエンドポイントと対話します。

サインアップ用のAPIエンドポイント

エンドポイント 説明
/signup/v1.0/start このエンドポイントは、サインアップ フローを開始します。 有効なアプリケーション ID、新しいユーザー名、チャレンジ型を渡すと、新しい継続トークンが返されます。 エンドポイントは、アプリケーションが選択した認証方法がMicrosoft Entraでサポートされていない場合に、Web 認証フローを使用するようにアプリケーションに指示する応答を返すことができます。
/signup/v1.0/challenge アプリは、Microsoft Entraでサポートされている challenge 型の一覧を使用して、このエンドポイントを呼び出します。 Microsoft Entra、ユーザーが認証を行うためにサポートされている認証方法の 1 つを選択します。
/signup/v1.0/continue このエンドポイントは、パスワード ポリシーの要件や不適切な属性形式などの要件がないため、フローを続行してユーザー アカウントを作成したり、フローを中断したりするのに役立ちます。 このエンドポイントは継続トークンを生成し、アプリに返します。 エンドポイントは、アプリケーションがMicrosoft Entraによって選択された認証方法ではない場合に、Web ベースの認証フローを使用することをアプリケーションに示す応答を返すことができます。
oauth/v2.0/token アプリケーションはこのエンドポイントを呼び出して、最終的にセキュリティ トークンを要求します。 アプリは、 /signup/v1.0/continue エンドポイントへの最後に成功した呼び出しから取得した継続トークンを使用する必要があります。

サインアップ チャレンジ型

この API を使用すると、クライアント アプリは、Microsoft Entraの呼び出しを行うときに、サポートする認証方法をアドバタイズできます。 これを行うために、アプリではアプリの要求に challenge_type パラメーターを使用します。 このパラメーターには、さまざまな認証方法を表す定義済みの値が保持されます。

チャレンジ型の詳細については、「ネイティブ認証のチャレンジ型」を参照してください。 この記事では、認証方法に使用するチャレンジの種類の値について説明します。

サインアップ フロー プロトコルの詳細

シーケンス図は、サインアップ プロセスのフローを示しています。

ネイティブ認証のサインアップ フローの図。

この図は、アプリがユーザー名 (電子メール)、パスワード (パスワード認証フローを含む電子メールの場合)、およびユーザーからの属性を異なるタイミングで (場合によっては別の画面で) 収集することを示しています。 ただし、同じ画面でユーザー名 (電子メール)、パスワード、必要なすべての属性値、および省略可能な属性値を収集するようにアプリを設計し、それらのすべてを /signup/v1.0/start エンドポイントに送信できます。 アプリが必要なすべての情報を /signup/v1.0/start エンドポイントに送信する場合、アプリは呼び出しを行い、オプションの手順で応答を処理する必要はありません。

手順 21 では、ユーザーは既にサインアップしています。 ただし、アプリがサインアップ後にユーザーを自動的にサインインさせる必要がある場合、アプリは oauth/v2.0/token エンドポイントを呼び出してセキュリティ トークンを要求します。

ステップ 1: サインアップ フローの開始を要求する

サインアップ フローは、アプリケーションが /signup/v1.0/start エンドポイントに POST 要求を行ってサインアップ フローを開始することで始まります。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します)。

例 1:

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/signup/v1.0/start
Content-Type: application/x-www-form-urlencoded
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&challenge_type=oob password redirect
&username=contoso-consumer@contoso.com 

例 2 (要求にユーザー属性とパスワードを含める):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/signup/v1.0/start
Content-Type: application/x-www-form-urlencoded
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&challenge_type=oob password redirect
&password={secure_password}
&attributes={"displayName": "{given_name}", "extension_2588abcdwhtfeehjjeeqwertc_age": "{user_age}", "postalCode": "{user_postal_code}"}
&username=contoso-consumer@contoso.com 
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
username はい contoso-consumer@contoso.com など、サインアップさせる顧客ユーザーのメール。
challenge_type はい oob password redirect など、アプリがサポートする認証チャレンジ型文字列のスペース区切りのリスト。 リストには、常に redirect チャレンジ型が含まれている必要があります。 この値は、メールとパスワードの認証方法では oob redirect または oob password redirect であると想定されます。
password いいえ アプリが顧客ユーザーから収集するパスワード値。 ユーザーのパスワードは、/signup/v1.0/start エンドポイントの /signup/v1.0/continue 以降を使用して送信できます。 {secure_password} をアプリケーションが顧客ユーザーから収集するパスワードの値を置き換えます。 アプリの UI でパスワードの確認フィールドを指定して、ユーザーが使用するパスワードを認識していることを確認するのはユーザーの責任です。 また、組織のポリシーに従って、何が強力なパスワードであるかをユーザーに認識させる必要があります。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。
このパラメーターが適用されるのは、メールとパスワードの認証方法の場合のみです
attributes いいえ アプリが顧客ユーザーから収取するユーザー属性値。 値は文字列ですが、キー値がユーザー属性のプログラミング可能な名前である JSON オブジェクトとして書式設定されます。 これらの属性は、組み込みまたはカスタムにすることができ、必須または省略可能です。 オブジェクトのキー名は、管理者が管理センターで構成Microsoft Entra属性によって異なります。 一部またはすべてのユーザー属性は、/signup/v1.0/start エンドポイント経由で送信することも、後で /signup/v1.0/continue エンドポイントで送信することもできます。 /signup/v1.0/start エンドポイント経由ですべての必要な属性を送信する場合、/signup/v1.0/continue エンドポイントで属性を送信する必要はありません。 ただし、/signup/v1.0/start エンドポイント経由で一部の必要な属性を送信する場合は、後で /signup/v1.0/continue エンドポイントで残りの必須属性を送信できます。 {given_name}{user_age}{postal_code} は、アプリが顧客ユーザーから収集する名前、年齢、郵便番号の値にそれぞれ置き換えます。 Microsoft Entraは、送信した属性 (存在しない属性を無視します。
capabilities いいえ クライアント アプリの機能を記述するスペース区切りのフラグ。 challenge_typeはチャレンジできる方法を定義しますが、capabilities、クライアント アプリが処理できる追加フローと、ユーザーに表示できる UI をネイティブ認証 API に指示します。 たとえば、 mfa_required は別の /challenge/token ループを意味します。 registration_required は、クライアント アプリが登録 API を呼び出し、登録 UI を表示します。 必要な機能がクライアント アプリによってアドバタイズされていない場合、API はリダイレクトを返します。 サポートされている値は、mfa_requiredregistration_requiredです。 機能の詳細を確認します

成功応答

アップロードの成功の例を次に示します:

HTTP/1.1 200 OK
Content-Type: application/json
{
    "continuation_token": "AQABAAEAAA…",
} 
財産 説明
continuation_token Microsoft Entraが返すContinuation token

リダイレクト応答

クライアント アプリが、Microsoft Entra必要な認証方法または機能をサポートしていない場合は、Web ベースの認証フローへのフォールバックが必要です。 このシナリオでは、Microsoft Entraは応答で redirect チャレンジの種類を返すことによってアプリに通知します。

HTTP/1.1 200 OK
Content-Type: application/json
{     
   "challenge_type": "redirect" 
} 
財産 説明
challenge_type Microsoft Entraはチャレンジの種類を持つ応答を返します。 このチャレンジ型の値は redirect です。これにより、アプリは Web ベースの認証フローを使用できます。

この応答は成功と見なされますが、アプリは Web ベースの認証フローに切り替える必要があります。 この場合は、Microsoft が構築し、サポートされている認証ライブラリを使用することをおすすめします。

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{
    "error": "user_already_exists", 
    "error_description": "AADSTS1003037: It looks like you may already have an account.... .\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...", 
    "error_codes": [ 
        1003037 
    ],
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd"
} 
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。
invalid_attributes 検証に失敗した属性の (オブジェクトの配列) のリスト。 この応答は、アプリがユーザー属性を送信し、 suberror プロパティの値が attribute_validation_failed場合に可能です。
suberror エラーの種類を詳細に分類するのに使用できるエラー コード文字列。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request challenge_type パラメーター値にサポートされていない認証方法が含まれている場合や、要求にクライアント ID 値が空または無効な client_id パラメーターが含まれていなかった場合に、要求パラメーターの検証に失敗しました。 error_description パラメーターを使用して、エラーの正確な原因を確認します。
invalid_client アプリが要求に含めるクライアント ID は、パブリック クライアントではない、ネイティブ認証が有効になっていないなど、ネイティブ認証構成がないアプリ用です。 suberror プロパティを使用して、エラーの正確な原因を確認します。
unauthorized_client 要求で使用されるクライアント ID には有効なクライアント ID 形式がありますが、外部テナントに存在しないか、正しくありません。
unsupported_challenge_type challenge_type パラメーター値には redirect チャレンジ型が含まれていません。
user_already_exists ユーザーは既に存在します。
invalid_grant アプリが送信するパスワードは、パスワードが短すぎるなど、複雑さの要件をすべて満たしていません。 suberror プロパティを使用して、エラーの正確な原因を確認します。
このパラメーターが適用されるのは、メールとパスワードの認証方法の場合のみです

エラー パラメーターの値が invalid_grant の場合、Microsoft Entraは応答に suberror プロパティを含めます。 invalid_grant エラーのsuberror プロパティの値を次に示します。

サブエラー値 説明
password_too_weak 複雑さの要件を満たしていないため、パスワードが弱すぎます。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。 この応答は、アプリがユーザー パスワードを送信した場合に可能です。
password_too_short 新しいパスワードは 8 文字未満です。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。 この応答は、アプリがユーザー パスワードを送信した場合に可能です。
password_too_long 新しいパスワードが 256 文字を超えています。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。 この応答は、アプリがユーザー パスワードを送信した場合に可能です。
password_recently_used 新しいパスワードは、最近使用したパスワードと同じにすることはできません。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。 この応答は、アプリがユーザー パスワードを送信した場合に可能です。
password_banned 新しいパスワードには、禁止されている単語、語句、またはパターンが含まれています。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。 この応答は、アプリがユーザー パスワードを送信した場合に可能です。
password_is_invalid パスワードは無効です。たとえば、許可されていない文字が使用されているためです。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。 この応答は、アプリがユーザー パスワードを送信した場合に可能です。

エラー パラメーターの値が invalid_client の場合、Microsoft Entraは応答に suberror プロパティを含めます。 invalid_client エラーの suberror プロパティの値を次 示します。

サブエラー値 説明
nativeauthapi_disabled ネイティブ認証が有効になっていないアプリのクライアント ID。

必要なすべての属性を /signup/v1.0/start エンドポイント経由で送信するが、すべての省略可能な属性を送信しない場合、後で /signup/v1.0/continue エンドポイント経由で追加の省略可能な属性を送信することはできません。 Microsoft Entraは、サインアップ フローを完了するために必須でないので、省略可能な属性を明示的に要求しません。 /signup/v1.0/start エンドポイントに送信できるユーザー属性については、「/signup/v1.0/continue」セクションの表をご覧ください。

ステップ 2: 認証方法を選びます

アプリは、ユーザーが認証を行うためにサポートされているチャレンジの種類のいずれかを選択するようにMicrosoft Entra要求します。 これを行うために、アプリで /signup/v1.0/challenge エンドポイントを呼び出します。 アプリでは、/signup/v1.0/start エンドポイントから取得した継続トークンを要求に含める必要があります。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/signup/v1.0/challenge
Content-Type: application/x-www-form-urlencoded
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&challenge_type=oob password redirect
&continuation_token=AQABAAEAAA…
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
challenge_type いいえ アプリがサポートする認証チャレンジ型文字列のスペース区切りのリスト (例: oob password redirect). リストには、常に redirect チャレンジ型が含まれている必要があります。 この値は、認証方法がメールのワンタイム パスコードの場合は oob redirect、メールとパスワードの場合は oob password redirect であると想定されます。
continuation_token はい 前の要求で返されたcontinuation tokenMicrosoft Entra。

成功応答

Microsoft Entraユーザーの電子メールにワンタイム パスコードを送信し、チャレンジの種類として値が oob とワンタイム パスコードに関する追加情報で応答します。

HTTP/1.1 200 OK
Content-Type: application/json
{
    "interval": 300,
    "continuation_token": "AQABAAEAAAYn...",
    "challenge_type": "oob",
    "binding_method": "prompt",
    "challenge_channel": "email",
    "challenge_target_label": "c***r@co**o**o.com",
    "code_length": 8
} 
財産 説明
interval アプリが OTP の再送信を試みる前に待機する必要がある時間 (秒単位)。
continuation_token Microsoft Entraが返すContinuation token
challenge_type 認証するユーザーに選択されたチャレンジ型。
binding_method 有効な値は prompt だけです。 このパラメータは、将来的に、さらに多くのワンタイム パスコード入力方法をユーザーに提供するために使用できます。 challenge_typeoob の場合発行されます
challenge_channel ワンタイム パスコードが送信されたチャネルの種類。 現時点では、メール チャネルのみがサポートされています。
challenge_target_label ワンタイム パスコードが送信された難読化されたメール。
code_length Microsoft Entra生成されるワンタイム パスコードの長さ。

リダイレクト応答

クライアント アプリが、Microsoft Entra必要な認証方法または機能をサポートしていない場合は、Web ベースの認証フローへのフォールバックが必要です。 このシナリオでは、Microsoft Entraは応答で redirect チャレンジの種類を返すことによってアプリに通知します。

HTTP/1.1 200 OK
Content-Type: application/json
{
   "challenge_type": "redirect"
}
財産 説明
challenge_type Microsoft Entraはチャレンジの種類を持つ応答を返します。 このチャレンジ型の値は redirect です。これにより、アプリは Web ベースの認証フローを使用できます。

この応答は成功と見なされますが、アプリは Web ベースの認証フローに切り替える必要があります。 この場合は、Microsoft が構築し、サポートされている認証ライブラリを使用することをおすすめします。

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "invalid_request", 
    "error_description": "AADSTS901007: The challenge_type list parameter does not include the 'redirect' type.\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        901007 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd"
} 
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request クライアント ID が空または無効など、要求パラメーターの検証に失敗しました。
expired_token 継続トークンが期限切れです。
unsupported_challenge_type challenge_type パラメーター値には redirect チャレンジ型が含まれていません。
invalid_grant 継続トークンが無効です。

手順 3: ワンタイム パスコードを送信する

アプリは、ユーザーのメール アドレスに送信されたワンタイム パスコードを送信します。 ワンタイム パスコードを送信しているので、oob パラメータが必要であり、grant_type パラメータの値は oob である必要があります。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/signup/v1.0/continue
Content-Type: application/x-www-form-urlencoded
continuation_token=uY29tL2F1dGhlbnRpY...
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444 
&grant_type=oob 
&oob={otp_code}
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
continuation_token はい 前の要求で返されたcontinuation tokenMicrosoft Entra。
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
grant_type はい /signup/v1.0/continue エンドポイントへの要求を使って、ワンタイム パスコード、パスワード、またはユーザー属性を送信できます。 この場合、この grant_type 値はこれら 3 つのユース ケースを区別するために使用されます。 grant_type に使用できる値は、oobpasswordattributes です。 この呼び出しでは、ワンタイム パスコードを送信しているので、値は oob である必要があります。
oob はい 顧客ユーザーがメールで受け取ったワンタイム パスコード。 {otp_code} を顧客ユーザーがメールで受け取ったワンタイム パスコードの値に置き換えます。 ワンタイム パスコードを再送信するには、アプリで /signup/v1.0/challenge エンドポイントにもう一度要求を行う必要があります。

アプリによるワンタイム パスコードの送信が成功した後のサインアップ フローは、次の表に示すようにシナリオによって異なります。

シナリオ 進め方
アプリは、/signup/v1.0/start エンドポイント経由でユーザーのパスワード (パスワード認証方法を使用した電子メールの場合) を正常に送信し、Microsoft Entra管理センターで属性が構成されていないか、必要なすべてのユーザー属性が /signup/v1.0/start エンドポイント経由で送信されます。 Microsoft Entraは継続トークンを発行します。 アプリでは、「セキュリティ トークンの要求」に示すように、継続トークンを使用して セキュリティ トークンを要求できます。
アプリは、 を介してユーザーのパスワード (パスワード認証方法を使用した電子メールの場合) を正常に送信しますが、必要なすべてのユーザー属性ではなく、Microsoft Entraは、ユーザー属性が必要 アプリから、/signup/v1.0/continue エンドポイント経由で必要なユーザー属性を送信する必要があります。 応答は、「必要なユーザー属性」に示すもののようになります。 「ユーザー属性の送信」に示されているユーザー属性を送信します。
アプリでは、/signup/v1.0/start エンドポイント経由でユーザーのパスワード (メールとパスワードの認証方法の場合) を送信しません。 Microsoft Entraの応答は、資格情報が必要であることを示します。 応答を参照してください。
この応答が返されるのは、メールとパスワードの認証方法の場合です

回答

HTTP/1.1 400 Bad Request
Content-Type: application/json
{
    "error": "credential_required",
    "error_description": "AADSTS55103: Credential required. Trace ID: d6966055-...-80500 Correlation ID: 3944-...-60d6 Timestamp: yy-mm-dd 02:37:33Z",
    "error_codes": [
        55103
    ],
    "timestamp": "yy-mm-dd 02:37:33Z",
    "trace_id": "d6966055-...-80500",
    "correlation_id": "3944-...-60d6",
    "continuation_token": "AQABEQEAAAA..."
} 
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。
continuation_token Microsoft Entraが返すContinuation token
suberror エラーの種類を詳細に分類するのに使用できるエラー コード文字列。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
credential_required アカウントの作成には認証が必要であるため、/signup/v1.0/challenge エンドポイントを呼び出して、ユーザーが指定する必要がある資格情報を特定する必要があります。
invalid_request 継続トークンの検証に失敗したか、要求に client_id パラメーターが含まれていない、クライアント ID 値が空か無効か、外部テナント管理者がすべてのテナント ユーザーに対してメール OTP を有効にしていないなど、要求パラメーターの検証に失敗しました。
invalid_grant 要求に含まれる許可の種類が有効またはサポートされていないか、OTP 値が正しくありません。
expired_token 要求に含まれる継続トークンの有効期限が切れています。

エラー パラメーターの値が invalid_grant の場合、Microsoft Entraは応答に suberror プロパティを含めます。 invalid_grant エラーのsuberror プロパティの値を次に示します。

サブエラー値 説明
invalid_oob_value ワンタイム パスコードの値が無効です。

ユーザーからパスワード資格情報を収集するには、アプリが /signup/v1.0/challenge エンドポイントを呼び出して、ユーザーが指定する必要がある資格情報を決定する必要があります。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/signup/v1.0/challenge
Content-Type: application/x-www-form-urlencoded
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&challenge_type=oob password redirect
&continuation_token=AQABAAEAAA…
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
challenge_type いいえ アプリがサポートする認証チャレンジ型文字列のスペース区切りのリスト (例: oob password redirect). リストには、常に redirect チャレンジ型が含まれている必要があります。 パスワード サインアップ フローを含むメールの場合、値には password redirect を含める必要があります。
continuation_token はい 前の要求で返されたcontinuation tokenMicrosoft Entra。

成功応答

パスワードがMicrosoft Entra管理センターでユーザー用に構成された認証方法である場合、継続トークンを含む成功応答がアプリに返されます。

HTTP/1.1 200 OK
Content-Type: application/json
{
    "challenge_type": "password",
    "continuation_token": " AQABAAEAAAAty..."
}
財産 説明
challenge_type password は、必要な資格情報の応答で返されます。
continuation_token Microsoft Entraが返すContinuation token

リダイレクト応答

クライアント アプリが、Microsoft Entra必要な認証方法または機能をサポートしていない場合は、Web ベースの認証フローへのフォールバックが必要です。 このシナリオでは、Microsoft Entraは応答で redirect チャレンジの種類を返すことによってアプリに通知します。

HTTP/1.1 200 OK
Content-Type: application/json
{     
    "challenge_type": "redirect" 
} 
財産 説明
challenge_type Microsoft Entraはチャレンジの種類を持つ応答を返します。 このチャレンジ型の値は redirect です。これにより、アプリは Web ベースの認証フローを使用できます。

この応答は成功と見なされますが、アプリは Web ベースの認証フローに切り替える必要があります。 この場合は、Microsoft が構築し、サポートされている認証ライブラリを使用することをおすすめします。

ステップ 4: サインアップするトークンを認証して取得する

アプリは、前の手順で要求Microsoft Entraユーザーの資格情報 (この場合はパスワード) を送信する必要があります。 /signup/v1.0/start エンドポイント経由でパスワード資格情報を送信しなかった場合、アプリはパスワード資格情報を送信する必要があります。 アプリは、 /signup/v1.0/continue エンドポイントにパスワードの送信を要求します。 パスワードを送信するため、password パラメーターが必要であり、grant_type パラメーターには値 password が必要です。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/signup/v1.0/continue
Content-Type: application/x-www-form-urlencoded
continuation_token=uY29tL2F1dGhlbnRpY...
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444 
&grant_type=password 
&password={secure_password}
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
continuation_token はい 前の手順で返されたcontinuation tokenMicrosoft Entra。
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
grant_type はい /signup/v1.0/continue エンドポイントへの要求を使って、ワンタイム パスコード、パスワード、またはユーザー属性を送信できます。 この場合、この grant_type 値はこれら 3 つのユース ケースを区別するために使用されます。 grant_type に使用できる値は、oobpasswordattributes です。 この呼び出しでは、ユーザーのパスワードを送信しているため、値は password である必要があります。
password はい アプリが顧客ユーザーから収集するパスワード値。 {secure_password} をアプリケーションが顧客ユーザーから収集するパスワードの値を置き換えます。 アプリの UI でパスワードの確認フィールドを指定して、ユーザーが使用するパスワードを認識していることを確認するのはユーザーの責任です。 また、組織のポリシーに従って、何が強力なパスワードであるかをユーザーに認識させる必要があります。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。

成功応答

要求が成功しても、Microsoft Entra管理センターで属性が構成されていない場合、または必要なすべての属性が /signup/v1.0/start エンドポイント経由で送信された場合、アプリは属性を送信せずに継続トークンを取得します。 アプリでは、「セキュリティ トークンの要求」に示すように、継続トークンを使用して セキュリティ トークンを要求できます。 それ以外の場合、Microsoft Entraの応答は、アプリが必要な属性を送信する必要があることを示します。 これらの属性は、組み込みまたはカスタムで、テナント管理者によってMicrosoft Entra管理センターで構成されました。

必要なユーザー属性

この応答は、name、*age、phone 属性の値を送信するようにアプリに要求します。

HTTP/1.1 400 Bad Request
Content-Type: application/json
{
    "error": "attributes_required",
    "error_description": "User attributes required",
    "error_codes": [
            55106
        ],
    "timestamp": "yy-mm-dd 02:37:33Z",
    "trace_id": "d6966055-...-80500",
    "correlation_id": "3944-...-60d6",
    "continuation_token": "AQABAAEAAAAtn...",
    "required_attributes": [
        {
            "name": "displayName",
            "type": "string",
            "required": true,
            "options": {
              "regex": ".*@.**$"
            }
        },
        {
            "name": "extension_2588abcdwhtfeehjjeeqwertc_age",
            "type": "string",
            "required": true
        },
        {
            "name": "postalCode",
            "type": "string",
            "required": true,
            "options": {
              "regex":"^[1-9][0-9]*$"
            }
        }
    ],
}

カスタム属性 (ディレクトリ拡張機能とも呼ばれます) は、規則 extension_{appId-without-hyphens}_{attribute-name} を使用して名前が付けられます。なお {appId-without-hyphens}拡張機能アプリのクライアント ID を取り除いたバージョンです。 たとえば、拡張機能アプリのクライアント ID が 2588a-bcdwh-tfeehj-jeeqw-ertc で、属性名が hobbies の場合、カスタム属性は extension_2588abcdwhtfeehjjeeqwertc_hobbies と命名されます。 カスタム属性と拡張機能アプリに関する詳細情報をご確認ください。

財産 説明
error この属性は、Microsoft Entra属性を検証または送信する必要があるため、ユーザー アカウントを作成できない場合に設定されます。
error_description エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。
continuation_token Microsoft Entraが返すContinuation token
required_attributes 続行するためにアプリが次の呼び出しを送信する必要がある属性のリスト (オブジェクトの配列)。 これらの属性は、アプリがユーザー名とは別に送信する必要がある追加の属性です。 このパラメーター Microsoft Entra含まれるのは、error パラメーターの値が attributes_required の場合の応答です。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request 継続トークンの検証に失敗した、要求に client_idパ ラメータが含まれていない、クライアント ID の値が空または無効であるなど、要求パラメータの検証に失敗しました。
invalid_grant 要求に含まれる許可の種類が無効であるか、サポートされていません。 grant_type に使用できる値は、oobpasswordattributes です
expired_token 要求に含まれる継続トークンの有効期限が切れています。
attributes_required 1 つ以上のユーザー属性が必要です。

リダイレクト応答

クライアント アプリが、Microsoft Entra必要な認証方法または機能をサポートしていない場合は、Web ベースの認証フローへのフォールバックが必要です。 このシナリオでは、Microsoft Entraは応答で redirect チャレンジの種類を返すことによってアプリに通知します。

HTTP/1.1 200 OK
Content-Type: application/json
{     
   "challenge_type": "redirect" 
} 
財産 説明
challenge_type Microsoft Entraはチャレンジの種類を持つ応答を返します。 このチャレンジ型の値は redirect です。これにより、アプリは Web ベースの認証フローを使用できます。

この応答は成功と見なされますが、アプリは Web ベースの認証フローに切り替える必要があります。 この場合は、Microsoft が構築し、サポートされている認証ライブラリを使用することをおすすめします。

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{
    "error": "invalid_grant",
    "error_description": "New password is too weak",
    "error_codes": [
        399246
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd",
    "suberror": "password_too_weak"
}
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。
suberror エラーの種類を詳細に分類するのに使用できるエラー コード文字列。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request challenge_type パラメーターに無効なチャレンジ型が含まれている場合など、要求パラメーターの検証に失敗しました。
invalid_grant 送信されたパスワードが短すぎるなど、送信された許可が無効です。 suberror プロパティを使用して、エラーの正確な原因を確認します。
expired_token 継続トークンが期限切れです。
attributes_required 1 つ以上のユーザー属性が必要です。

エラー パラメーターの値が invalid_grant の場合、Microsoft Entraは応答に suberror プロパティを含めます。 suberror プロパティで使用できる値を次に示します。

サブエラー値 説明
password_too_weak 複雑さの要件を満たしていないため、パスワードが弱すぎます。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。
password_too_short 新しいパスワードは 8 文字未満です。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。
password_too_long 新しいパスワードが 256 文字を超えています。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。
password_recently_used 新しいパスワードは、最近使用したパスワードと同じにすることはできません。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。
password_banned 新しいパスワードには、禁止されている単語、語句、またはパターンが含まれています。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。
password_is_invalid パスワードは無効です。たとえば、許可されていない文字が使用されているためです。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。 この応答は、アプリがユーザー パスワードを送信した場合に可能です。

ユーザー属性の送信

フローを続行するには、アプリで /signup/v1.0/continue エンドポイントを呼び出して、必要なユーザー属性を送信する必要があります。 属性を送信するため、attributes パラメーターが必要であり、grant_type パラメーターには attributes と等しい値が必要です。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/signup/v1.0/continue
Content-Type: application/x-www-form-urlencoded
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444 
&grant_type=attributes 
&attributes={"displayName": "{given_name}", "extension_2588abcdwhtfeehjjeeqwertc_age": "{user_age}", "postaCode": "{postal_code}"}
&continuation_token=AQABAAEAAAAtn...
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
continuation_token はい 前の要求で返されたcontinuation tokenMicrosoft Entra。
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
grant_type はい /signup/v1.0/continue エンドポイントへの要求を使って、ワンタイム パスコード、パスワード、またはユーザー属性を送信できます。 この場合、この grant_type 値はこれら 3 つのユース ケースを区別するために使用されます。 grant_type に使用できる値は、oobpasswordattributes です。 この呼び出しでは、ユーザー属性を送信しているため、値は attributes であることが期待されます。
attributes はい アプリが顧客ユーザーから収集するユーザー属性値。 値は文字列ですが、組み込みまたはカスタムのユーザー属性の名前をキー値とする JSON オブジェクトとして書式設定されます。 オブジェクトのキー名は、管理者が管理センターで構成Microsoft Entra属性によって異なります。 {given_name}{user_age}{postal_code} は、アプリが顧客ユーザーから収集する名前、年齢、郵便番号の値にそれぞれ置き換えます。 Microsoft Entraは、送信した属性 (存在しない属性を無視します。

成功応答

要求が成功した場合は、ユーザー Microsoft Entraサインアップし、継続トークンを発行します。 アプリは継続トークンを使用して、 oauth/v2.0/token エンドポイントからセキュリティ トークンを要求できます。

HTTP/1.1 200 OK
Content-Type: application/json
{  
    "continuation_token": "AQABAAEAAAYn..."
} 
財産 説明
continuation_token Microsoft Entraが返すContinuation token

リダイレクト応答

クライアント アプリが、Microsoft Entra必要な認証方法または機能をサポートしていない場合は、Web ベースの認証フローへのフォールバックが必要です。 このシナリオでは、Microsoft Entraは応答で redirect チャレンジの種類を返すことによってアプリに通知します。

HTTP/1.1 200 OK
Content-Type: application/json
{     
   "challenge_type": "redirect" 
} 
財産 説明
challenge_type Microsoft Entraはチャレンジの種類を持つ応答を返します。 このチャレンジ型の値は redirect です。これにより、アプリは Web ベースの認証フローを使用できます。

この応答は成功と見なされますが、アプリは Web ベースの認証フローに切り替える必要があります。 この場合は、Microsoft が構築し、サポートされている認証ライブラリを使用することをおすすめします。

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{
    "error": "expired_token",
    "error_description": "AADSTS901007: The continuation_token is expired.  .\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...", 
    "error_codes": [
        552003
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd" 
}
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。
continuation_token Microsoft Entraが返すContinuation token
unverified_attributes 検証する必要がある属性キー名のリスト (オブジェクトの配列)。 このパラメーターは、error パラメーターの値が verification_required の場合に応答に含まれます。
required_attributes アプリが送信する必要がある属性のリスト (オブジェクトの配列)。 Microsoft Entraは、error パラメーターの値が attributes_requiredの場合に、応答にこのパラメーターを含めます。
invalid_attributes 検証に失敗した属性の (オブジェクトの配列) のリスト。 このパラメーターは、 suberror プロパティの値がattribute_validation_failedされるときに応答に含 まれます
suberror エラーの種類を詳細に分類するのに使用できるエラー コード文字列。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request 継続トークンの検証に失敗した、要求に client_idパ ラメータが含まれていない、クライアント ID の値が空または無効であるなど、要求パラメータの検証に失敗しました。
invalid_grant 指定された許可の種類が無効であるか、サポートされていないか、検証に失敗しました (属性の検証に失敗するなど)。 suberror プロパティを使用して、エラーの正確な原因を確認します。
expired_token 要求に含まれる継続トークンの有効期限が切れています。
attributes_required 1 つ以上のユーザー属性が必要です。

エラー パラメーターの値が invalid_grant の場合、Microsoft Entraは応答に suberror プロパティを含めます。 invalid_grant エラーのsuberror プロパティの値を次に示します。

サブエラー値 説明
attribute_validation_failed ユーザー属性の検証に失敗しました。 invalid_attributes パラメーターには、検証に失敗した属性のリスト (オブジェクトの配列) が含まれています。

手順 5: サインアップ後に自動的にサインインする

ユーザーがサインアップ後に自動的にサインインする必要がある場合、アプリは oauth/v2.0/token エンドポイントに POST 要求を行い、前の手順で取得した継続トークンを提供してセキュリティ トークンを取得します。 トークン エンドポイントを呼び出す方法について説明します

エンドポイントへのユーザー属性の送信

Microsoft Entra管理センターでは、必要に応じて、または省略可能なユーザー属性を構成できます。 この構成により、エンドポイントへの呼び出しを行ったときにMicrosoft Entraがどのように応答するかが決まります。 サインアップ フローが完了するために、省略可能な属性は必要ありません。 したがって、すべての属性が省略可能な場合は、ユーザー名が検証される前にそれらを送信する必要があります。 そうしないと、省略可能な属性なしでサインアップが完了します。

次の表は、Microsoft Entraエンドポイントにユーザー属性を送信できるタイミングをまとめたものです。

エンドポイント 必須の属性 省略可能な属性 必須属性と省略可能属性の両方
/signup/v1.0/start エンドポイント はい はい はい
ユーザー名検証前の /signup/v1.0/continue エンドポイント はい はい はい
ユーザー名検証後の /signup/v1.0/continue エンドポイント はい いいえ はい

ユーザー属性値の形式

Microsoft Entra管理センターでユーザー フロー設定を構成して、ユーザーから収集する情報を指定します。 「サインアップ時にカスタム ユーザー属性」に関する記事を使用して、ビルトインとカスタム属性の両方の値を収集する方法を確認してください。

構成する属性のユーザーによる入力の種類も指定することができます。 次の表は、サポートされているユーザー入力の種類と、UI コントロールによって収集された値をMicrosoft Entraに送信する方法をまとめたものです。

ユーザーによる入力の種類 送信された値の形式
テキストボックス  役職、ソフトウェア エンジニアなどの単一の値。
SingleRadioSelect 言語、ノルウェー語などの 1 つの値。 
チェックボックス複数選択 趣味などの 1 つまたは複数の値、ダンス、またはダンス、水泳、旅行

属性の値を送信する方法を示す要求の例を次に示します:

POST /{tenant_subdomain}.onmicrosoft.com/signup/v1.0/continue HTTP/1.1
Host: {tenant_subdomain}.ciamlogin.com
Content-Type: application/x-www-form-urlencoded
 
continuation_token=ABAAEAAAAtfyo... 
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444 
&grant_type=attributes 
&attributes={"jobTitle": "Software Engineer", "extension_2588abcdwhtfeehjjeeqwertc_language": "Norwegian", "extension_2588abcdwhtfeehjjeeqwertc_hobbies": "Dancing,Swimming,Traveling"}
&continuation_token=AQABAAEAAAAtn...

ユーザー属性の入力型の詳細については、「カスタム ユーザー属性の入力の種類」の記事を参照してください。

ユーザー属性の参照方法

サインアップ ユーザー フローを作成する場合は、サインアップ時にユーザーから収集するユーザー属性を構成します。 Microsoft Entra管理センターのユーザー属性の名前は、ネイティブ認証 API で参照する方法とは異なります。

たとえば、Microsoft Entra 管理センターの Display Name は、API で displayName として参照されます。

ネイティブ認証 API で組み込みユーザー属性とカスタム ユーザー属性の両方を参照する方法については、ユーザー プロファイル属性に関する記事を参照してください。

サインインフローのAPI参照

ユーザーは、サインアップに使用する認証方法でサインインする必要があります。 たとえば、メールとパスワードの認証方法を使用してサインアップするユーザーは、メールとパスワードでサインインする必要があります。

セキュリティ トークンを要求するために、アプリは 3 つのエンドポイント ( oauth/v2.0/initiateoauth/v2.0/challengeoauth/v2.0/token、必要に応じて oauth/v2.0/introspect) と対話します。

サインイン用のAPIエンドポイント

エンドポイント 説明
oauth/v2.0/initiate このエンドポイントは、サインイン フローを開始します。 アプリが既に存在するユーザー アカウントのユーザー名を使用して呼び出した場合、継続トークンを使用して成功応答を返します。 アプリがMicrosoft Entraでサポートされていない認証方法の使用を要求した場合、このエンドポイント応答は、ブラウザー ベースの認証フローを使用する必要があることをアプリに示すことができます。
oauth/v2.0/challenge アプリはこのエンドポイントを呼び出して、ユーザーの認証に使用するサポートされている sign-in チャレンジの種類のいずれかを選択するようにMicrosoft Entraを要求します。 テナント管理者が顧客ユーザーに対して MFA を適用する場合、アプリはこのエンドポイントを呼び出して、第 2 要素認証方法についてユーザーにチャレンジします。
oauth/v2.0/token このエンドポイントは、アプリから受け取ったユーザーの資格情報を検証し、アプリにセキュリティ トークンを発行します。 このエンドポイントからの応答は、ユーザーが MFA チャレンジを完了するか、強力な認証方法を登録する必要があるかを示すこともできます。
oauth/v2.0/introspect アプリが呼び出して、多要素認証 (MFA) に登録されている強力な認証方法の一覧を要求します。 イントロスペクト エンドポイントを使用する方法について説明します

サインイン チャレンジ型

API を使用すると、アプリは、Microsoft Entraの呼び出しを行うときに、サポートする認証方法をアドバタイズできます。 これを行うために、アプリはその要求に challenge_type パラメーターを使用します。 このパラメーターには、さまざまな認証方法を表す定義済みの値が保持されます。

特定の認証方法では、サインアップ フロー中にアプリがMicrosoft Entraに送信するチャレンジの種類の値は、アプリがサインインしたときと同じです。 たとえば、メールとパスワードの認証方法では、サインアップとサインインの両方のフローで oobpasswordredirect というチャレンジ型の値を使用します。

チャレンジ型の詳細については、「ネイティブ認証のチャレンジ型」の記事を参照してください。

サインイン フロー プロトコルの詳細

シーケンス図は、サインイン プロセスのフローを示しています。 サインイン フローは、ユーザーの認証方法によって異なります。

メール ワンタイム パスコードを使うネイティブ認証サインインの図。

アプリはユーザーの OTP 付きのメールを確認した後、セキュリティ トークンを受け取ります。 ワンタイム パスコードの配信が遅れたり、ユーザーのメール アドレスに配信されない場合、ユーザーは別のワンタイム パスコードの送信を要求できます。 Microsoft Entra前のパスコードが検証されていない場合は、別のワンタイム パスコードを再送信します。 Microsoft Entraワンタイム パスコードを再送信すると、以前に送信されたコードが無効になります。

次のセクションでは、サインイン フローを 3 つの基本的な手順にまとめます。

ステップ 1: サインイン フローの開始を要求する

認証フローは、アプリケーションが/initiate エンドポイントに POST 要求を行ってサインイン フローを開始することで始まります。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/oauth2/v2.0/initiate
Content-Type: application/x-www-form-urlencoded
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&challenge_type=password redirect
&username=contoso-consumer@contoso.com
&capabilities=registration_required mfa_required
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
username はい contoso-consumer@contoso.com などの顧客ユーザーのメール。
challenge_type はい アプリがサポートする認証チャレンジ型文字列のスペース区切りのリスト (例: oob password redirect). リストには、常に redirect チャレンジ型が含まれている必要があります。 この値は、メールのワンタイム パスコードの場合は oob redirect、メールとパスワードの場合は password redirect であると想定されます。
capabilities いいえ クライアント アプリの "方法" の準備状況を説明するスペース区切りのフラグ。 challenge_typeはチャレンジできる方法を定義しますが、capabilitiesは、クライアント アプリが処理できる追加フローと表示できる UI をネイティブ認証 API に指示します。 たとえば、 mfa_required は、 /introspect/challenge、および /token ループを意味します。 registration_required は、クライアント アプリが登録 API を呼び出して登録 UI を表示します。 必要な機能がクライアント アプリに含まれていない場合、API はリダイレクトを返します。 サポートされている値は、mfa_requiredregistration_requiredです。 機能の詳細を確認します

成功応答

アップロードの成功の例を次に示します:

HTTP/1.1 200 OK
Content-Type: application/json
{
    "continuation_token": "uY29tL2F1dGhlbnRpY..."
}
財産 説明
continuation_token Microsoft Entraが返すContinuation token

リダイレクト応答

クライアント アプリが、Microsoft Entra必要な認証方法または機能をサポートしていない場合は、Web ベースの認証フローへのフォールバックが必要です。 このシナリオでは、Microsoft Entraは応答で redirect チャレンジの種類を返すことによってアプリに通知します。

HTTP/1.1 200 OK
Content-Type: application/json

{     
   "challenge_type": "redirect" 
} 
財産 説明
challenge_type Microsoft Entraはチャレンジの種類を持つ応答を返します。 このチャレンジ型の値は redirect です。これにより、アプリは Web ベースの認証フローを使用できます。

この応答は成功と見なされますが、アプリは Web ベースの認証フローに切り替える必要があります。 この場合は、Microsoft が構築し、サポートされている認証ライブラリを使用することをおすすめします。

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "invalid_request", 
    "error_description": "AADSTS901007: The challenge_type list parameter does not include the 'redirect' type.\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        901007 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd"
} 
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request challenge_type パラメーターに無効なチャレンジ型が含まれている場合など、要求パラメーターの検証に失敗しました。 または、要求に client_id パラメーターが含まれていませんでした。クライアント ID 値が空または無効です。 error_description パラメーターを使用して、エラーの正確な原因を確認します。
unauthorized_client 要求で使用されるクライアント ID には有効なクライアント ID 形式がありますが、外部テナントに存在しないか、正しくありません。
invalid_client アプリが要求に含めるクライアント ID は、パブリック クライアントではない、ネイティブ認証が有効になっていないなど、ネイティブ認証構成がないアプリ用です。 suberror プロパティを使用して、エラーの正確な原因を確認します。
user_not_found username が存在しません。
unsupported_challenge_type challenge_type パラメーター値には redirect チャレンジ型が含まれていません。

エラー パラメーターの値が invalid_client の場合、Microsoft Entraは応答に suberror プロパティを含めます。 invalid_client エラーの suberror プロパティの値を次 示します。

サブエラー値 説明
nativeauthapi_disabled ネイティブ認証が有効になっていないアプリのクライアント ID。

ステップ 2: 認証方法を選びます

フローを続行するために、アプリは前の手順で取得した継続トークンを使用してMicrosoft Entraを要求し、ユーザーが MFA チャレンジを認証または完了するためにサポートされているチャレンジの種類のいずれかを選択します。 アプリが /oauth2/v2.0/challenge エンドポイントに POST 要求を行います。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/oauth2/v2.0/challenge
Content-Type: application/x-www-form-urlencoded
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&challenge_type=password redirect 
&continuation_token=uY29tL2F1dGhlbnRpY... 
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
continuation_token はい 前の要求で返されたcontinuation tokenMicrosoft Entra。 前の要求では、 /oauth2/v2.0/initiate エンドポイントが呼び出されます。ユーザーが MFA チャレンジを完了した場合は、 /oauth2/v2.0/introspect エンドポイントが呼び出されます。
challenge_type いいえ アプリがサポートする認証チャレンジ型文字列のスペース区切りのリスト (例: oob password redirect). リストには、常に redirect チャレンジ型が含まれている必要があります。 この値は、メールのワンタイム パスコードの場合は oob redirect、メールとパスワードの場合は password redirect であると想定されます。
id いいえ /oauth2/v2.0/introspect エンドポイントから返される強力な認証方法の文字列識別子。 このパラメーターは、クライアント アプリがユーザーに第 2 要素認証を要求する場合に必要です。 イントロスペクト エンドポイントを使用する方法について説明します

成功応答

成功応答は、ユーザーの認証方法によって異なります。

テナント管理者がMicrosoft Entra管理センターで電子メールワンタイム パスコードをユーザーの認証方法として構成した場合、Microsoft Entraはワンタイム パスコードをユーザーの電子メールに送信し、チャレンジの種類として oob に応答し、ワンタイム パスコードに関する詳細情報を提供します。

HTTP/1.1 200 OK
Content-Type: application/json
{
    "continuation_token": "uY29tL2F1dGhlbnRpY...",
    "challenge_type": "oob",
    "binding_method": "prompt ", 
    "challenge_channel": "email",
    "challenge_target_label ": "c***r@co**o**o.com ",
    "code_length": 8
} 
財産 説明
continuation_token Microsoft Entraが返すContinuation token
challenge_type 認証するユーザーに選択されたチャレンジ型。
binding_method 有効な値は prompt だけです。 このパラメーターは、将来的に、さらに多くのワンタイム パスコード入力方法をユーザーに提供するために使用できます。 challenge_typeoob の場合発行されます
challenge_channel ワンタイム パスコードが送信されたチャネルの種類。 現時点では、メールがサポートされています。
challenge_target_label ワンタイム パスコードが送信された難読化されたメール。
code_length Microsoft Entra生成されるワンタイム パスコードの長さ。

リダイレクト応答

次のシナリオでは、Web ベースの認証フローへのフォールバックが必要になる場合があります。

  • クライアント アプリは、Microsoft Entraが必要とする認証方法や機能をサポートしていません。
  • ユーザーは強力な認証方法として SMS を使用しようとしますが、不正な保護によって要求が高リスクと見なされた場合 (パスワード認証を使用したメールでのみ) 要求がブロックされます。

これらのシナリオでは、Microsoft Entraは応答で redirect チャレンジの種類を返すことによってアプリに通知します。

HTTP/1.1 200 OK
Content-Type: application/json
{     
   "challenge_type": "redirect" 
} 
財産 説明
challenge_type Microsoft Entraはチャレンジの種類を持つ応答を返します。 このチャレンジ型の値は redirect です。これにより、アプリは Web ベースの認証フローを使用できます。

この応答は成功と見なされますが、アプリは Web ベースの認証フローに切り替える必要があります。 この場合は、Microsoft が構築し、サポートされている認証ライブラリを使用することをおすすめします。

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "invalid_request", 
    "error_description": "AADSTS901007: The challenge_type list parameter does not include the 'redirect' type.\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        901007 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd"
} 
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request challenge_type パラメーターに無効なチャレンジ型が含まれている場合など、要求パラメーターの検証に失敗しました。
invalid_grant 要求に含まれる継続トークンが有効ではありません。
expired_token 要求に含まれる継続トークンの有効期限が切れています。
unsupported_challenge_type challenge_type パラメーター値には redirect チャレンジ型が含まれていません。

ステップ 3: セキュリティ トークンの要求

アプリは、 oauth2/v2.0/token エンドポイントに POST 要求を行い、セキュリティ トークンを取得するために前の手順で選択したユーザーの資格情報を提供します。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/oauth2/v2.0/token
Content-Type: application/x-www-form-urlencoded

continuation_token=uY29tL2F1dGhlbnRpY...
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444 
&grant_type=password 
&password={secure_password}
&scope=openid offline_access 
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
continuation_token はい 前の要求で返されたcontinuation tokenMicrosoft Entra。
grant_type はい 許可の種類。 トークン エンドポイントを呼び出す場合、この値は、ユーザーの最初の要素認証を確認するために、サインイン フローのパスワード認証方法を使用した電子メールの
- password である必要があります。
- サインイン フローでの電子メール ワンタイム パスコード認証方法の oob
- サインアップ フロー後の自動サインインのcontinuation_token。
- セルフサービス パスワード リセット フロー後の自動サインインのcontinuation_token
- 強力認証方法の登録フローの後にcontinuation_tokenします。
- ユーザーの第 2 要素認証を確認するときにmfa_oobします。
scope はい スコープのスペース区切りリスト。 すべてのスコープは、 プロファイルopenid電子メールなどの OpenID Connect (OIDC) スコープと共に、1 つのリソースからのスコープである必要があります。 アプリは、ID トークンを発行するためにMicrosoft Entraopenid スコープを含める必要があります。 Microsoft Entraが更新トークンを発行するには、アプリに offline_access スコープを含める必要があります。 Microsoft ID プラットフォームでのアクセス許可と同意に関する詳細をご覧ください。
password いいえ アプリがユーザーから収集するパスワード値。 {secure_password}を、アプリがユーザーから収集するパスワード値に置き換えます。 認証方法がパスワード付きの電子メールである場合は、このパラメーターが 必要 です。
oob いいえ ユーザーが電子メールで受信するワンタイム パスコード。 必須の場合:
- プライマリ認証方法は電子メール ワンタイム パスコードです。
- プライマリ認証方法がパスワード付きの電子メールである場合、アプリは MFA チャレンジを満たすために電子メール ワンタイム パスコードを送信しています。
ワンタイム パスコードを再送信するには、 /challenge エンドポイントをもう一度呼び出します。
username いいえ contoso-consumer@contoso.comなど、サインアップするユーザーの電子メール。 このパラメーターは、サインアップ フローで 必要 です。

成功応答

アップロードの成功の例を次に示します:

HTTP/1.1 200 OK
Content-Type: application/json
{
    "token_type": "Bearer",
    "scope": "openid profile",
    "expires_in": 4141,
    "access_token": "eyJ0eXAiOiJKV1Qi...",
    "refresh_token": "AwABAAAA...",
    "id_token": "eyJ0eXAiOiJKV1Q..."
}
財産 説明
token_type トークンの種類の値を示します。 Microsoft Entraがサポートする唯一の型は、Bearerです。
scopes アクセス トークンが有効なスコープのスペース区切りのリスト。
expires_in アクセス トークンが有効な時間の長さ (秒単位) です。
access_token アプリが /token エンドポイントから要求したアクセス トークン。 アプリはこのアクセス トークンを使用して、Web API などのセキュリティで保護されたリソースへのアクセスを要求できます。
refresh_token OAuth 2.0 更新トークン。 現在のアクセス トークンの有効期限が切れた後に他のアクセス トークンを取得するために、アプリでこのトークンを使用できます。 更新トークンの有効期間は長期です。 これは、リソースへのアクセスを長期間維持できます。 アクセス トークンの更新の詳細については、「アクセス トークン の更新」を参照してください。
: offline_access スコープを要求した場合にのみ発行されます。
id_token ユーザーを識別するために使用される JSON Web トークン (Jwt)。 アプリはトークンをデコードして、サインインしたユーザーに関する情報を要求できます。 アプリではこの値をキャッシュして表示できます。また、機密クライアントでは認可にこのトークンを使用できます。 ID トークンの詳細については、 Microsoft ID プラットフォームの ID トークンを参照してください。
: openid スコープを要求した場合にのみ発行されます。

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "invalid_grant", 
    "error_description": "AADSTS901007: Error validating credentials due to invalid username or password.\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        50126 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd"
} 
財産 説明
error エラーの種類を分類し、エラーに対応するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request パラメーター検証の要求に失敗しました。 何が起こったかを理解するには、エラーの説明のメッセージを使用します。
invalid_grant 要求に含まれる継続トークンが無効です。要求に含まれているユーザー サインイン資格情報が無効であるか、ユーザーからさらに操作が必要であるか、要求に含まれる許可の種類が不明です。
invalid_client 要求に含まれるクライアント ID がパブリック クライアント用ではありません。
expired_token 要求に含まれる継続トークンの有効期限が切れています。
invalid_scope 要求に含まれる 1 つ以上のスコープが無効です。
unauthorized_client 要求に含まれるクライアント ID が無効であるか、存在しません。
unsupported_grant_type 要求に含まれる許可の種類がサポートされていないか、正しくありません。

エラー パラメーターの値が invalid_grant の場合、Microsoft Entraは応答に suberror プロパティを含めます。 invalid_grant エラーのsuberror プロパティの値を次に示します。

サブエラー値 説明
invalid_oob_value アプリが送信するワンタイム パスコードの値が無効です。
mfa_required MFA が必要です。 応答には 継続トークンが含まれます。 oauth2/v2.0/introspect エンドポイントを呼び出して、ユーザーの登録済みの強力な認証方法を取得します。 このサブエラーは、ユーザーのプライマリ認証方法がパスワード付きの電子メールである場合にのみ発生します。 ユーザーが登録した強力な認証方法を取得する方法について説明します

: 場合によっては MFA が必要ですが、ネイティブ認証では mfa_requiredが返されません。 たとえば、 強力な認証方法の登録 フローが /oauth2/v2.0/token の呼び出しの前にあり、そのフロー中に使用可能な唯一のメソッド (電子メール) が既に検証されている場合です。
registration_required ユーザーは MFA チャレンジを完了する必要がありますが、強力な認証方法が登録されていません。 ユーザーに登録を求めるメッセージを表示します。 このエラーは、ユーザーのプライマリ認証方法がパスワード付きの電子メールである場合に発生します。 強力な認証方法を登録する方法について説明します。

リダイレクト応答

クライアント アプリが、Microsoft Entra必要な認証方法または機能をサポートしていない場合は、Web ベースの認証フローへのフォールバックが必要です。 このシナリオでは、Microsoft Entraは応答で redirect チャレンジの種類を返すことによってアプリに通知します。

HTTP/1.1 200 OK
Content-Type: application/json
{     
    "challenge_type": "redirect",
    "redirect_reason": "Client is missing registration_required capability"
} 
財産 説明
challenge_type Microsoft Entraはチャレンジの種類を持つ応答を返します。 このチャレンジ型の値は redirect です。これにより、アプリは Web ベースの認証フローを使用できます。
redirect_reason リダイレクトが必要な理由。 たとえば、Microsoft Entraは、MFA または強力な認証方法の登録が必要であることを検出しますが、アプリでは要求にこれらの機能が含まれていませんでした。

この応答は成功と見なされますが、アプリは Web ベースの認証フローに切り替える必要があります。 この場合は、Microsoft が構築し、サポートされている認証ライブラリを使用することをおすすめします。

ユーザーが登録した強力な認証方法を取得する

oauth2/v2.0/introspect エンドポイントを使用して、登録されている強力な認証方法のユーザーの一覧を要求します。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/oauth2/v2.0/introspect
Content-Type: application/x-www-form-urlencoded
continuation_token=uY29tL2F1dGhlbnRpY...
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
continuation_token はい 前の要求で返されたcontinuation tokenMicrosoft Entra。

成功応答

例:

HTTP/1.1 200 OK
Content-Type: application/json
{
    "continuation_token": "uY29tL2F1dGhlbnRpY...",
    "methods":[
        {
            "id":"0a0a0a0a-1111-bbbb-2222-3c3c3c3c3c3c",
            "challenge_type":"oob",
            "challenge_channel":"email",
            "login_hint":"c***r@co**o**o.com"
        },
        {   
          "id": "1b1b1b1b-2222-cccc-3333-4d4d4d4d4d4d",   
          "challenge_type": "oob",   
          "challenge_channel": "sms",   
          "login_hint": "+1********6   
        }
    ]
}
財産 説明
continuation_token Microsoft Entraが返すContinuation token
methods ユーザーが登録した強力な認証方法の一覧 (オブジェクト)。

MFA メソッド オブジェクトには、次のプロパティがあります。

財産 説明
id MFA メソッドの自動生成された一意の文字列識別子。 アプリは、/oauth2/v2.0/challenge エンドポイントを呼び出すときにidとしてこの文字列を使用します。
challenge_type MFA メソッドとして使用するユーザーに対して選択されたチャレンジの種類。 現在サポートされているチャレンジの種類は oob です
challenge_channel MFA メソッドが送信されるチャネルの種類。 現在サポートされているチャレンジ チャネルは 電子メールです
login_hint 難読化された電子メールなどの強力な認証方法のヒント。

リダイレクト応答

クライアント アプリが、Microsoft Entra必要な認証方法または機能をサポートしていない場合は、Web ベースの認証フローへのフォールバックが必要です。 このシナリオでは、Microsoft Entraは応答で redirect チャレンジの種類を返すことによってアプリに通知します。

HTTP/1.1 200 OK
Content-Type: application/json
{     
   "challenge_type": "redirect" 
} 

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "invalid_request", 
    "error_description": "AADSTS901007: The continuation_token provided is not valid for this endpoint.\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        50126 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd"
} 
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request パラメーター検証の要求に失敗しました。 何が起こったかを理解するには、エラーの説明のメッセージを使用します。
invalid_client 要求に含まれるクライアント ID がパブリック クライアント用ではありません。
expired_token 要求に含まれる継続トークンの有効期限が切れています。
server_error 要求に問題が発生しました。

クライアント アプリがユーザーに登録されている強力な認証方法の一覧を正常に取得すると、ユーザーは MFA チャレンジを完了するために使用する方法を選択します。 その後、フローは次のように進みます。

  1. クライアント アプリは /oauth2/v2.0/challenge を呼び出し、 /oauth2/v2.0/introspect から取得した継続トークンと、選択した MFA メソッドの id を含めます。

    POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/oauth2/v2.0/challenge
    Content-Type: application/x-www-form-urlencoded    
    client_id=00001111-aaaa-2222-bbbb-3333cccc4444
    &id=0a0a0a0a-1111-bbbb-2222-3c3c3c3c3c3c 
    &continuation_token=uY29tL2F1dGhlbnRpY... 
    
  2. Microsoft Entra、電子メールなどのチャレンジ コードをユーザーのチャレンジ チャネルに送信し、継続トークンと MFA チャレンジの詳細を使用してクライアント アプリに応答します。

    HTTP/1.1 200 OK
    Content-Type: application/json
    
    {
        "continuation_token": "uY29tL2F1dGhlbnRpY...",
        "challenge_type": "oob",
        "binding_method": "prompt ", 
        "challenge_channel": "email",
        "challenge_target_label ": "c***r@co**o**o.com ",
        "code_length": 8
    } 
    
  3. アプリは、 /oauth2/v2.0/token エンドポイントに POST 要求を行い、継続トークン、正しい許可の種類、対応する許可の種類の値を含め、セキュリティ トークンを取得できるようになりました。 セキュリティ トークンの要求で想定される応答を参照してください。

    POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/oauth2/v2.0/token
    Content-Type: application/x-www-form-urlencoded    
    client_id=00001111-aaaa-2222-bbbb-3333cccc4444 
    &continuation_token=uY29tL2F1dGhlbnRpY...   
    &grant_type=mfa_oob  
    &oob={otp_code}
    &scope=openid offline_access
    

強力な認証方法の API リファレンスを登録する

ネイティブ認証では、強力な認証方法の登録がサポートされます。 アプリが /oauth2/v2.0/token エンドポイントを呼び出し、MFA が必要であるが、ユーザーに厳密なメソッドが登録されていない場合、応答 (registeration_required) は、トークンを発行する前にユーザーに登録するようアプリに指示します。

クライアント アプリは、強力な認証方法を登録するフローを完了した後、 /oauth2/v2.0/token エンドポイントを呼び出してセキュリティ トークンを要求します。

強力な認証方法の登録エンドポイント

強力な認証方法登録 API を使用するために、アプリは次の表に示すエンドポイントを使用します。

エンドポイント 説明
/register/v1.0/introspect このエンドポイントを呼び出して、ユーザーが登録できる強力な認証方法の一覧をフェッチします。
/register/v1.0/challenge このエンドポイントを呼び出して、電子メールワンタイム パスコードなど、チャレンジをユーザーに送信します。
/register/v1.0/continue このエンドポイントを呼び出して、アプリがユーザーから収集するチャレンジ (ワンタイム パスコードなど) を送信して、強力な認証方法を登録するフローを完了します。 呼び出しが成功し、継続トークンを取得したら、 /oauth2/v2.0/token エンドポイントを呼び出してセキュリティ トークンを要求します。 トークン エンドポイントを呼び出す方法について説明します

手順 1: 強力な認証方法の一覧を取得する

登録フローは、ユーザーが登録を許可されている強力な認証方法の一覧をアプリが要求したときに開始されます。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/register/v1.0/introspect
Content-Type: application/x-www-form-urlencoded
?continuation_token=uY29tL2F1dGhlbnRpY... 
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444  
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。

成功応答

アップロードの成功の例を次に示します:

HTTP/1.1 200 OK
Content-Type: application/json
{
    "continuation_token": "uY29tL2F1dGhlbnRpY...",
    "methods":[
        {
            "id":"email",
            "challenge_type":"oob",
            "challenge_channel":"email",
            "login_hint":"caseyjensen@contoso.com"
        },
        {   
          "id": "sms",   
          "challenge_type": "oob",   
          "challenge_channel": "sms"
        }
    ]
}
財産 説明
continuation_token Microsoft Entraが返すContinuation token
methods ユーザーが登録できる強力な認証方法の (オブジェクトの) 一覧。

強力な認証方法オブジェクトには、次のプロパティがあります。

財産 説明
id メソッドの文字列キー。 サポートされている値 の電子メール、SMS
challenge_type MFA メソッドとして使用するユーザーに対して選択されたチャレンジの種類。 現在サポートされているチャレンジの種類は oob です
challenge_channel MFA メソッドが送信されるチャネルの種類。 サポートされている値 の電子メール、SMS
login_hint 電子メールなどの強力な認証方法のヒント。 この値は、クライアント アプリによって電子メール テキスト ボックスを事前入力するために使用されます。

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "invalid_request", 
    "error_description": "AADSTS901007: The continuation_token provided is not valid for this endpoint.\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        50126 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd"
} 
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request 継続トークンの検証に失敗したか、要求に client_id パラメーターが含まれていない、クライアント ID 値が空か無効か、外部テナント管理者がすべてのテナント ユーザーに対してメール OTP を有効にしていないなど、要求パラメーターの検証に失敗しました。
expired_token 要求に含まれる継続トークンの有効期限が切れています。

手順 2: 強力な認証方法を選択する

この手順では、ユーザーが登録する強力な認証方法を送信します。 Microsoft Entra、電子メールワンタイム パスコードなどのチャレンジをユーザーに送信します。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/register/v1.0/challenge 

?continuation_token=uY29tL2F1dGhlbnRpY... 
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444  
&challenge_type=oob  
&challenge_channel=email 
&challenge_target=contoso-consumer@contoso.com 
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
continuation_token はい continuation トークン/register/v1.0/introspect エンドポイントから返Microsoft Entra
challenge_type はい 認証方法のチャレンジの種類。 現在の型は oob です。
challenge_target はい ユーザーが登録する電子メールまたは電話番号。
challenge_channel いいえ チャレンジを送信するチャネル。 サポートされているチャレンジ チャネルの値: 電子メール、SMS

成功応答

成功した応答の例を次に示します。

例 1:

HTTP/1.1 200 OK
Content-Type: application/json
{ 
  "continuation_token": "uY29tL2F1dGhlbnRpY...", 
  "challenge_type": "oob", 
  "binding_method": "prompt", 
  "challenge_target": "contoso-consumer@contoso.com", 
  "challenge_channel": "email", 
  "code_length": 8 
} 

例 2:

サインアップ フローが強力な認証方法の登録フローの前にあり、 /register/v1.0/challenge エンドポイントに送信された電子メールがサインアップ フローで検証されたものと一致する場合、ネイティブ認証 API はチャレンジをユーザーに送信せずにメソッドを登録します。 この場合、応答は次のスニペットのようになります。

HTTP/1.1 200 OK
Content-Type: application/json
{ 
  "continuation_token": "uY29tL2F1dGhlbnRpY...",
  "challenge_type": "preverified" 
}
財産 説明
continuation_token Microsoft Entraが返すContinuation token
challenge_type 認証に使用するユーザーに対して選択されたチャレンジの種類 ( oob など)、強力な認証方法が事前検証された場合は 事前 検証済み。
binding_method 有効な値は prompt だけです。 このパラメータは、将来的に、さらに多くのワンタイム パスコード入力方法をユーザーに提供するために使用できます。 challenge_typeoob であり、強力な認証方法が事前検証されていない場合に発行されます。
challenge_channel ワンタイム パスコードが送信されたチャネルの種類。 サポートされている値 の電子メール、SMS。 強力な認証方法が事前検証されていない場合に返されます。
code_length binding_methodがプロンプトの場合のワンタイム パスコードの長さ。 強力な認証方法が事前検証されていない場合に返されます。
challenge_target チャレンジが送信されたターゲット。 これは、要求で指定された入力と同じです。 強力な認証方法が事前検証されていない場合に返されます。
interval /register/continue のポーリングの間にクライアントが待機する間隔 (秒単位)。 prompt=noneし、強力な認証方法が事前検証されていない場合にのみ返されます。 クライアントは、ネイティブ認証 API から HTTP 429 を受け取るたびに間隔を 2 倍にする必要があります。

エラー応答

ここでのエラーは、 /register/v1.0/introspect エンドポイントを呼び出すときに発生する可能性があるエラーと似ています。 ただし、電話番号を登録するときに、電話番号が高リスクと見なされる場合は、要求がブロックされる可能性があります。

要求がブロックされた場合に発生する可能性のあるエラーを次に示します。

エラー値 説明
access_denied SMS がブロックされました。

エラー パラメーターの値が access_denied の場合、Microsoft Entraは応答にサブエラー プロパティを含めます。 invalid_grant エラーのサブエラー プロパティの値を次に示します。

サブエラー値 説明
provider_blocked_by_admin テナント管理者が電話リージョンをブロックしました。
provider_blocked_by_rep 多要素認証方法がブロックされています (電話番号は RepMap によってブロックされました)。

手順 3: チャレンジを送信する

この手順では、 /register/v1.0/continue エンドポイントを呼び出して、強力な認証方法の登録を完了します。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/register/v1.0/continue 

?continuation_token=uY29tL2F1dGhlbnRpY... 
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444  
&grant_type=oob  
&oob={otp_code}
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
continuation_token はい 前の要求で返されたcontinuation tokenMicrosoft Entra。
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
grant_type はい 許可の種類。 現在サポートされている値は oobです。/register/v1.0/challenge エンドポイントで強力な認証方法が事前検証される場合はcontinuation_token。
oob いいえ 顧客ユーザーがメールで受け取ったワンタイム パスコード。 {otp_code} を顧客ユーザーがメールで受け取ったワンタイム パスコードの値に置き換えます。 ワンタイム パスコードを再送信するには、アプリで /register/v1.0/challenge エンドポイントにもう一度要求を行う必要があります。 /register/v1.0/challenge エンドポイントで強力な認証方法が事前検証されていない場合に必要です。

成功応答

アップロードの成功の例を次に示します:

HTTP/1.1 200 OK
Content-Type: application/json
{ 
  "continuation_token": "uY29tL2F1dGhlbnRpY..."
} 
財産 説明
continuation_token Microsoft Entraが返すコンティニュエーション トークン。 この継続トークンを使用して、 /oauth2/v2.0/token エンドポイントを呼び出してセキュリティ トークンを要求します。 トークン エンドポイントを呼び出す方法について説明します

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "invalid_request", 
    "error_description": "AADSTS55200: The continuation_token is invalid.\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        55200 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd"
}
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request 継続トークンの検証に失敗したか、要求に client_id パラメーターが含まれていない、クライアント ID 値が空か無効か、外部テナント管理者がすべてのテナント ユーザーに対してメール OTP を有効にしていないなど、要求パラメーターの検証に失敗しました。
invalid_grant 要求に含まれる許可の種類が有効またはサポートされていないか、OTP 値が正しくありません。
expired_token 要求に含まれる継続トークンの有効期限が切れています。

エラー パラメーターの値が invalid_grant の場合、Microsoft Entraは応答に suberror プロパティを含めます。 invalid_grant エラーのsuberror プロパティの値を次に示します。

サブエラー値 説明
invalid_oob_value ワンタイム パスコードの値が無効です。

セルフサービス パスワード リセット (SSPR)

プライマリ認証方法がパスワード付きの電子メールであるユーザーの場合は、セルフサービス パスワード リセット (SSPR) API を使用して、顧客ユーザーが自分のパスワードをリセットできるようにします。 この API は、パスワードを忘れた場合やパスワードを変更するシナリオに使用できます。

セルフサービスパスワードリセット用のAPIエンドポイント

この API を使用するために、アプリは次の表に示すエンドポイントを使用します。

エンドポイント 説明
/resetpassword/v1.0/start 顧客ユーザーがアプリの [パスワードを忘れた場合] または [パスワードの変更] リンクまたはボタンを選択すると、アプリによってこのエンドポイントが呼び出されます。 このエンドポイントは、ユーザーのユーザー名 (電子メール) を検証し、パスワード リセット フローで使用する 継続トークン を返します。 アプリがMicrosoft Entraでサポートされていない認証方法の使用を要求した場合、このエンドポイント応答は、ブラウザー ベースの認証フローを使用する必要があることをアプリに示すことができます。
/resetpassword/v1.0/challenge クライアントと継続トークンでサポートされているチャレンジ型の一覧を受け入れます。 優先する復旧資格情報のいずれかにチャレンジが発行されます。 たとえば、oob チャレンジは、顧客ユーザー アカウントに関連付けられているメール アドレスに帯域外ワンタイム パスコードを発行します。 アプリがMicrosoft Entraでサポートされていない認証方法の使用を要求した場合、このエンドポイント応答は、ブラウザー ベースの認証フローを使用する必要があることをアプリに示すことができます。
/resetpassword/v1.0/continue /resetpassword/v1.0/challenge エンドポイントによって発行されたチャレンジを検証し、 エンドポイントの/resetpassword/v1.0/submitを返すか、ユーザーに別のチャレンジを発行します。
/resetpassword/v1.0/submit ユーザーによる新しいパスワード入力と継続トークンを受け入れて、パスワード リセット フローを完了します。 このエンドポイントは、別の継続トークンを発行します。
/resetpassword/v1.0/poll_completion アプリは、/resetpassword/v1.0/submit エンドポイントによって発行された継続トークンを使用して、パスワード リセット要求の状態を確認できます。
oauth2/v2.0/token パスワードのリセットが成功した場合、アプリは、 /resetpassword/v1.0/poll_completion エンドポイントから取得した継続トークンを使用して、 oauth2/v2.0/token エンドポイントからセキュリティ トークンを取得できます。

セルフサービス パスワード リセット チャレンジ型

API を使用すると、アプリは、Microsoft Entraの呼び出しを行うときに、サポートする認証方法をアドバタイズできます。 これを行うために、アプリはその要求に challenge_type パラメーターを使用します。 このパラメーターには、さまざまな認証方法を表す定義済みの値が保持されます。

SSPR フローの場合、チャレンジ型の値は oob および redirect です。

チャレンジ型の詳細については、「ネイティブ認証のチャレンジ型」を参照してください。

セルフサービス パスワード リセット フロー プロトコルの詳細

シーケンス図は、パスワード リセット プロセスのフローを示しています。

ネイティブ認証のセルフサービス パスワード リセットのフローを示す図。

この図は、アプリがユーザーのユーザー名 (メール) とパスワードを異なるタイミングで (場合によっては別の画面で) 収集することを示しています。 ただし、同じ画面でユーザー名 (メール) と新しいパスワードを収集するようにアプリを設計できます。 この場合、アプリはパスワードを保持し、必要に応じて /resetpassword/v1.0/submit エンドポイントを介して送信します。

ステップ 1: セルフサービス パスワード リセット フローの開始を要求する

パスワード リセット フローは、アプリがエンドポイントに /resetpassword/v1.0/start POST 要求を行ってセルフサービス パスワード リセット フローを開始することから始まります。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/resetpassword/v1.0/start
Content-Type: application/x-www-form-urlencoded
client_id=00001111-aaaa-2222-bbbb-3333cccc4444 
&challenge_type=oob redirect 
&username=contoso-consumer@contoso.com 
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
username はい contoso-consumer@contoso.com などの顧客ユーザーのメール。
challenge_type はい アプリがサポートする認証チャレンジ型文字列のスペース区切りのリスト (例: oob password redirect). リストには、常に redirect チャレンジ型が含まれている必要があります。 この要求では、値にoob redirect を含める必要があります。
capabilities いいえ クライアント アプリの "方法" の準備状況を説明するスペース区切りのフラグ。 challenge_typeはチャレンジできる方法を定義しますが、capabilitiesは、クライアント アプリが処理できる追加フローと表示できる UI をネイティブ認証 API に指示します。 たとえば、 mfa_required は別の /challenge/token ループを意味します。 registration_required は、クライアント アプリが登録 API を呼び出し、登録 UI を表示します。 必要な機能がクライアント アプリによってアドバタイズされていない場合、API はリダイレクトを返します。 サポートされている値は、mfa_requiredregistration_requiredです。 機能の詳細を確認します

成功応答

例:

HTTP/1.1 200 OK
Content-Type: application/json
{
    "continuation_token": "uY29tL2F1dGhlbnRpY..."
}
財産 説明
continuation_token Microsoft Entraが返すContinuation token

リダイレクト応答

クライアント アプリが、Microsoft Entra必要な認証方法または機能をサポートしていない場合は、Web ベースの認証フローへのフォールバックが必要です。 このシナリオでは、Microsoft Entraは応答で redirect チャレンジの種類を返すことによってアプリに通知します。

HTTP/1.1 200 OK
Content-Type: application/json
{     
   "challenge_type": "redirect" 
} 
財産 説明
challenge_type Microsoft Entraはチャレンジの種類を持つ応答を返します。 このチャレンジ型の値は redirect です。これにより、アプリは Web ベースの認証フローを使用できます。

この応答は成功と見なされますが、アプリは Web ベースの認証フローに切り替える必要があります。 この場合は、Microsoft が構築し、サポートされている認証ライブラリを使用することをおすすめします。

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "invalid_request", 
    "error_description": "AADSTS901007: The challenge_type list parameter does not include the 'redirect' type.\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        901007 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd"
} 
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request challenge_type パラメーターに無効なチャレンジ型が含まれる場合、または要求に client_id パラメーターが含まれない場合、クライアント ID 値が空または無効な場合など、要求パラメーター認証が失敗しました。 error_description パラメーターを使用して、エラーの正確な原因を確認します。
user_not_found username が存在しません。
unsupported_challenge_type challenge_type パラメーター値には redirect チャレンジ型が含まれていません。
invalid_client アプリが要求に含めるクライアント ID は、パブリック クライアントではない、ネイティブ認証が有効になっていないなど、ネイティブ認証構成がないアプリ用です。 suberror プロパティを使用して、エラーの正確な原因を確認します。
unauthorized_client 要求で使用されるクライアント ID には有効なクライアント ID 形式がありますが、外部テナントに存在しないか、正しくありません。

エラー パラメーターの値が invalid_client の場合、Microsoft Entraは応答に suberror プロパティを含めます。 invalid_client エラーの suberror プロパティの値を次 示します。

サブエラー値 説明
nativeauthapi_disabled ネイティブ認証が有効になっていないアプリのクライアント ID。

ステップ 2: 認証方法を選びます

フローを続行するために、アプリは前の手順で取得した継続トークンを使用してMicrosoft Entraを要求し、ユーザーが認証に使用するためにサポートされているチャレンジの種類のいずれかを選択します。 アプリが /resetpassword/v1.0/challenge エンドポイントに POST 要求を行います。 この要求が成功した場合、Microsoft Entraはユーザーのアカウント電子メールにワンタイム パスコードを送信します。 現時点では、メール OTP のみがサポートされています。

次に例を示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/resetpassword/v1.0/challenge
Content-Type: application/x-www-form-urlencoded
client_id=client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&challenge_type=oob redirect
&continuation_token=uY29tL2F1dGhlbnRpY... 
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
continuation_token はい 前の要求で返されたcontinuation tokenMicrosoft Entra。
challenge_type いいえ アプリがサポートする認証チャレンジ型文字列のスペース区切りのリスト (例: oob redirect). リストには、常に redirect チャレンジ型が含まれている必要があります。 この要求では、値にoob redirect を含める必要があります。

成功応答

例:

HTTP/1.1 200 OK
Content-Type: application/json
{
    "continuation_token": "uY29tL2F1dGhlbnRpY...",
    "challenge_type": "oob",
    "binding_method": "prompt ", 
    "challenge_channel": "email",
    "challenge_target_label ": "c***r@co**o**o.com ",
    "code_length": 8
} 
財産 説明
continuation_token Microsoft Entraが返すContinuation token
challenge_type 認証するユーザーに選択されたチャレンジ型。
binding_method 有効な値は prompt だけです。 このパラメータは、将来的に、さらに多くのワンタイム パスコード入力方法をユーザーに提供するために使用できます。 challenge_typeoob の場合発行されます
challenge_channel ワンタイム パスコードが送信されたチャネルの種類。 現時点では、メールがサポートされています。
challenge_target_label ワンタイム パスコードが送信された難読化されたメール。 ユーザーに対して MFA が有効になっている場合、ワンタイム パスコードを含む電子メールが次のアドレスに送信されます。
- 電子メール アドレスがアカウントの電子メール アドレスと異なる場合に、強力な認証方法として使用される電子メール アドレス。
- 強力な認証方法が SMS の場合のアカウントの電子メール アドレス。
code_length Microsoft Entra生成されるワンタイム パスコードの長さ。

リダイレクト応答

クライアント アプリが、Microsoft Entra必要な認証方法または機能をサポートしていない場合は、Web ベースの認証フローへのフォールバックが必要です。 このシナリオでは、Microsoft Entraは応答で redirect チャレンジの種類を返すことによってアプリに通知します。

HTTP/1.1 200 OK
Content-Type: application/json
{     
   "challenge_type": "redirect" 
} 
財産 説明
challenge_type Microsoft Entraはチャレンジの種類を持つ応答を返します。 このチャレンジ型の値は redirect です。これにより、アプリは Web ベースの認証フローを使用できます。

この応答は成功と見なされますが、アプリは Web ベースの認証フローに切り替える必要があります。 この場合は、Microsoft が構築し、サポートされている認証ライブラリを使用することをおすすめします。

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "invalid_request", 
    "error_description": "AADSTS901007: The challenge_type list parameter does not include the 'redirect' type.\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        901007 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd"
} 
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request challenge_type パラメーターに無効なチャレンジ型が含まれている場合や継続トークンの検証に失敗した場合など、要求パラメーターの検証に失敗しました。
expired_token 継続トークンが期限切れです。
unsupported_challenge_type challenge_type パラメーター値には redirect チャレンジ型が含まれていません。

手順 3: ワンタイム パスコードを送信する

その後、アプリは /resetpassword/v1.0/continue エンドポイントに POST 要求を行います。 要求には、前のステップで選択したユーザーの資格情報と、/resetpassword/v1.0/challenge エンドポイントから発行された継続トークンをアプリに含める必要があります。

要求の例を次に示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/resetpassword/v1.0/continue
Content-Type: application/x-www-form-urlencoded
continuation_token=uY29tL2F1dGhlbnRpY... 
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444 
&grant_type=oob 
&oob={otp_code}
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
continuation_token はい 前の要求で返されたcontinuation tokenMicrosoft Entra。
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
grant_type はい 有効な値は oob だけです。
oob はい 顧客ユーザーがメールで受け取ったワンタイム パスコード。 {otp_code} を顧客ユーザーがメールで受け取ったワンタイム パスコードに置き換えます。 ワンタイム パスコードを再送信するには、アプリで /resetpassword/v1.0/challenge エンドポイントにもう一度要求を行う必要があります。

成功応答

例:

HTTP/1.1 200 OK
Content-Type: application/json
{ 
    "expires_in": 600,
    "continuation_token": "czZCaGRSa3F0MzpnW...",
} 
財産 説明
expires_in continuation_token の有効期限が切れるまでの時間 (秒単位)。 expires_in の最大値は 600 秒です。
continuation_token Microsoft Entraが返すContinuation token

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "invalid_request", 
    "error_description": "AADSTS55200: The continuation_token is invalid.\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        55200 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd"
} 
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。
suberror エラーの種類を詳細に分類するのに使用できるエラー コード文字列。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request 継続トークンの検証に失敗したか、要求に client_id パラメーターが含まれていないか、クライアント ID 値が空か無効か、外部テナント管理者がすべてのテナント ユーザーに対して SSPR とメール OTP を有効にしていないなど、要求パラメーターの検証に失敗しました。 error_description パラメーターを使用して、エラーの正確な原因を確認します。
invalid_grant 許可の種類が不明であるか、予想される許可の種類の値と一致しません。 suberror プロパティを使用して、エラーの正確な原因を確認します。
expired_token 継続トークンが期限切れです。

エラー パラメーターの値が invalid_grant の場合、Microsoft Entraは応答に suberror プロパティを含めます。 invalid_grant エラーのsuberror プロパティの値を次に示します。

サブエラー値 説明
invalid_oob_value ワンタイム パスコードの値が無効です。

ステップ 4: 新しいパスワードを送信する

アプリはユーザーから新しいパスワードを収集し、 エンドポイントによって発行された/resetpassword/v1.0/continueを使用して、/resetpassword/v1.0/submit エンドポイントに POST 要求を行ってパスワードを送信します。

次に例を示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/resetpassword/v1.0/submit
Content-Type: application/x-www-form-urlencoded
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&continuation_token=czZCaGRSa3F0Mzp...
&new_password={new_password}
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
continuation_token はい 前の要求で返されたcontinuation tokenMicrosoft Entra。
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。
new_password はい ユーザーの新しいパスワード。 {new_password} をユーザーの新しいパスワードに置き換えます。 アプリの UI でパスワードの確認フィールドを指定して、ユーザーが使用するパスワードを認識していることを確認するのはユーザーの責任です。 また、組織のポリシーに従って、何が強力なパスワードであるかをユーザーに認識させる必要があります。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。

成功応答

例:

HTTP/1.1 200 OK
Content-Type: application/json
{
    "continuation_token": "uY29tL2F1dGhlbnRpY...",
    "poll_interval": 2
}
財産 説明
continuation_token Microsoft Entraが返すContinuation token
poll_interval /resetpassword/v1.0/poll_completion エンドポイントを介してパスワード リセット要求の状態を確認するために、ポーリング要求の間にアプリが待機する必要がある最小時間 (秒) (ステップ 5 を参照)

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "invalid_request", 
    "error_description": "AADSTS901007: The challenge_type list parameter does not include the 'redirect' type.\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        901007 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd"
} 
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。
suberror エラーの種類を詳細に分類するのに使用できるエラー コード文字列。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request 継続トークンの検証に失敗するなど、要求パラメーターの検証に失敗しました。
expired_token 継続トークンが期限切れです。
invalid_grant 送信されたパスワードが短すぎるなど、送信された許可が無効です。 suberror プロパティを使用して、エラーの正確な原因を確認します。

エラー パラメーターの値が invalid_grant の場合、Microsoft Entraは応答に suberror プロパティを含めます。 suberror プロパティで使用できる値を次に示します。

サブエラー値 説明
password_too_weak 複雑さの要件を満たしていないため、パスワードが弱すぎます。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。
password_too_short 新しいパスワードは 8 文字未満です。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。
password_too_long 新しいパスワードが 256 文字を超えています。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。
password_recently_used 新しいパスワードは、最近使用したパスワードと同じにすることはできません。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。
password_banned 新しいパスワードには、禁止されている単語、語句、またはパターンが含まれています。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。
password_is_invalid パスワードは無効です。たとえば、許可されていない文字が使用されているためです。 Microsoft Entraのパスワード ポリシーの詳細についてはを参照してください。 この応答は、アプリがユーザー パスワードを送信した場合に可能です。

ステップ 5: パスワード リセットの状態をポーリングする

最後に、新しいパスワードを使用してユーザーの構成を更新すると多少の遅延が発生するため、アプリは /resetpassword/v1.0/poll_completion エンドポイントを使用して、パスワード リセット状態のMicrosoft Entraをポーリングできます。 ポーリング要求の間にアプリが待機する必要がある最小時間 (秒単位) は、/resetpassword/v1.0/submit パラメーターの poll_interval エンドポイントから返されます。

次に例を示します (読みやすくするために、要求の例を複数行で示します):

POST https://{tenant_subdomain}.ciamlogin.com/{tenant_subdomain}.onmicrosoft.com/resetpassword/v1.0/poll_completion
Content-Type: application/x-www-form-urlencoded
client_id=00001111-aaaa-2222-bbbb-3333cccc4444
&continuation_token=czZCaGRSa3F0... 
パラメーター 必須 説明
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
continuation_token はい 前の要求で返されたcontinuation tokenMicrosoft Entra。
client_id はい Microsoft Entra管理センターに登録したアプリのアプリケーション (クライアント) ID。

成功応答

例:

HTTP/1.1 200 OK
Content-Type: application/json
{
    "status": "succeeded",
    "continuation_token":"czZCaGRSa3F0..."
} 
財産 説明
status パスワード リセット要求の状態。 Microsoft Entraが failed の状態を返す場合、アプリは、/resetpassword/v1.0/submit エンドポイントに別の要求を行って新しいパスワードを再送信し、新しい継続トークンを含めることができます。
continuation_token Microsoft Entraが返すContinuation token。 状態が ucceeded の場合、Microsoft Entraが返す継続トークンを使用して、セキュリティ トークンのRequest で説明されているように、oauth2/v2.0/token エンドポイント経由でセキュリティ トークンを要求できます。 つまり、ユーザーがパスワードを正常にリセットした後は、新しいサインイン フローを開始しなくても、アプリに直接サインインできます。

Microsoft Entraが返す可能性のある状態を次に示します (status パラメーターの使用可能な値)。

エラー値 説明
succeeded パスワードのリセットが正常に完了しました。
failed パスワードのリセットに失敗しました。 アプリは、/resetpassword/v1.0/submit エンドポイントに別の要求を行うことで、新しいパスワードを再送信できます。
not_started パスワードのリセットが開始されていません。 アプリは後でもう一度状態を確認できます。
in_progress パスワードのリセットが進行中です。 アプリは後でもう一度状態を確認できます。

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "expired_token", 
    "error_description": "AADSTS901007: The continuation_token is expired.\r\nTrace ID: 0000aaaa-11bb-cccc-dd22-eeeeee333333\r\nCorrelation ID: aaaa0000-bb11-2222-33cc-444444dddddd\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        552003 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "0000aaaa-11bb-cccc-dd22-eeeeee333333", 
    "correlation_id": "aaaa0000-bb11-2222-33cc-444444dddddd"
} 
財産 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つMicrosoft Entra固有のエラー コードの一覧。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。

発生する可能性があるエラー ( error プロパティの値) を次に示します。

エラー値 説明
invalid_request 継続トークンの検証に失敗するなど、要求パラメーターの検証に失敗しました。
expired_token 継続トークンが期限切れです。

パスワードのリセット後に自動的にサインインする

パスワードのリセットが成功した後にユーザーがサインインする必要がある場合。 アプリは、 /oauth2/v2.0/token エンドポイントを呼び出す必要があります。 トークン エンドポイントを呼び出す方法について説明します