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

適用対象: 灰色の X 記号がある白い円。 従業員テナント 白いチェック マーク記号がある緑の円。 外部テナント (詳細情報)

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

この API リファレンス記事では、フローを実行するために生の HTTP 要求を手動で行うときにのみ必要な詳細について説明します。 ただし、この方法は推奨しません。 そのため、可能なときは、Microsoft が構築し、サポートしている認証 SDK を使ってください。 SDK の使用方法の詳細については、「チュートリアル: ネイティブ認証用に Android モバイル アプリを準備する」および 「チュートリアル: ネイティブ認証用に iOS モバイル アプリを準備する」を参照してください。

API エンドポイントの呼び出しが成功すると、ユーザーを識別するための ID トークンと、保護された API を呼び出すためのアクセス トークンの両方を受け取ります。 API からの応答はすべて JSON 形式です。

Microsoft Entra のネイティブ認証 API では、次の 2 つの認証方法でのサインアップとサインインをサポートしています。

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

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

Note

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

前提条件

  1. 顧客テナント向け Microsoft Entra 外部 ID。 お持ちでない場合は、無料試用版にサインアップしてください。

  2. まだ登録していない場合は、Microsoft Entra 管理センターでアプリケーションを登録します。 委任されたアクセス許可を付与し、パブリック クライアントとネイティブの認証フローを有効にしてください。

  3. まだ作成していない場合は、Microsoft Entra 管理センターでユーザー フローを作成します。 ユーザー フローを作成するときに、必須として構成したユーザー属性を記録しておきます。アプリでは、これらの属性を Microsoft Entra に送信する必要があります。 [ID プロバイダー] で、[ワンタイム パスコードの電子メール送信] オプションを選択します。

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

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

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

継続トークン

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

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

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

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

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

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

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

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

ステップ 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 
パラメーター 必須 Description
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/continue エンドポイントの /signup/v1.0/start 以降を使用して送信できます。 {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 では、送信した属性は無視されるので、これら存在しません

成功応答

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

HTTP/1.1 200 OK
Content-Type: application/json
{
    "continuation_token": "AQABAAEAAA…",
} 
パラメーター 説明
continuation_token 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": "user_already_exists", 
    "error_description": "AADSTS1003037: It looks like you may already have an account.... .\r\nTrace ID: b386ad47-23ae-4092-...-1000000\r\nCorrelation ID: 72f57f26-...-3fa6\r\nTimestamp: yyyy-...", 
    "error_codes": [ 
        1003037 
    ],
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "b386ad47-...-0000", 
    "correlation_id": "72f57f26-...-3fa6"
} 
パラメーター 説明
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。

Note

必要なすべての属性を /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…
パラメーター 必須 Description
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 はい Microsoft 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 から返される継続トークン
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: b386ad47-23ae-4092-...-1000000\r\nCorrelation ID: 72f57f26-...-3fa6\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        901007 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "b386ad47-...-0000", 
    "correlation_id": "72f57f26-...-3fa6"
} 
パラメーター 説明
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}
パラメーター 必須 Description
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
continuation_token はい Microsoft 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 は継続トークンを発行します。 アプリでは、継続トークンを使用して、ステップ 5 に示すようにセキュリティ トークンを要求できます。
アプリは /signup/v1.0/start 経由でユーザーのパスワード (メールとパスワードの認証方法の場合) を正常に送信しましたが、必要なユーザー属性をすべて送信したわけではなく、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 から返される継続トークンします。
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…
パラメーター 必須 Description
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra 管理センターに登録したアプリケーション (クライアント) ID。
challenge_type いいえ アプリがサポートする認証チャレンジ型文字列のスペース区切りのリスト (例: oob password redirect). リストには、常に redirect チャレンジ型が含まれている必要があります。 パスワード サインアップ フローを含むメールの場合、値には password redirect を含める必要があります。
continuation_token はい Microsoft 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 から返される継続トークン

アプリが 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}
パラメーター 必須 Description
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
continuation_token はい Microsoft 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 エンドポイント経由で送信された場合、アプリは属性を送信せずに継続トークンを取得します。 アプリでは、継続トークンを使用して、ステップ 5 に示すようにセキュリティ トークンを要求できます。 それ以外の場合、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]*$"
            }
        }
    ],
}

Note

カスタム属性 (ディレクトリ拡張機能とも呼ばれます) は、規則 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 から返される継続トークン
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": "b386ad47-...-0000", 
    "correlation_id": "72f57f26-...-3fa6",
    "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...
パラメーター 必須 Description
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
continuation_token はい Microsoft 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 は継続トークンを発行します。このトークンは、アプリがセキュリティ トークンの要求に使用できます。

HTTP/1.1 200 OK
Content-Type: application/json
{  
    "continuation_token": "AQABAAEAAAYn..."
} 
パラメーター 説明
continuation_token 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": "expired_token",
    "error_description": "AADSTS901007: The continuation_token is expired.  .\r\nTrace ID: b386ad47-23ae-4092-...-1000000\r\nCorrelation ID: 72f57f26-...-3fa6\r\nTimestamp: yyyy-...", 
    "error_codes": [
        552003
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "b386ad47-...-0000", 
    "correlation_id": "72f57f26-...-3fa6" 
}
パラメーター 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つ Microsoft Entra 固有のエラー コードのリスト。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。
continuation_token Microsoft Entra から返される継続トークン
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: セキュリティ トークンの要求

アプリは /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=ABAAEAAAAtyo... 
&client_id=00001111-aaaa-2222-bbbb-3333cccc4444 
&username=contoso-consumer@contoso.com
&scope={scopes}
&grant_type=continuation_token 
パラメーター 必須 Description
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra 管理センターに登録したアプリケーション (クライアント) ID。
grant_type はい パラメーター値は継続トークンである必要があります。
continuation_token はい Microsoft Entra が前のステップで返した継続トークン
scope はい アクセス トークンが有効なスコープのスペース区切りのリスト。 {scopes} を Microsoft Entra から返されるアクセス トークンが有効である、有効なスコープに置き換えます。
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..."
}
パラメーター 説明
access_token アプリが /token エンドポイントから要求したアクセス トークン。 アプリはこのアクセス トークンを使用して、Web API などのセキュリティで保護されたリソースへのアクセスを要求できます。
token_type トークンの種類の値を示します。 Microsoft Entra ID でサポートされる種類はベアラーのみです。
expires_in アクセス トークンが有効な時間の長さ (秒単位) です。
scopes アクセス トークンが有効なスコープのスペース区切りのリスト。
refresh_token OAuth 2.0 更新トークン。 現在のアクセス トークンの有効期限が切れた後に他のアクセス トークンを取得するために、アプリでこのトークンを使用できます。 更新トークンの有効期間は長期です。 これは、リソースへのアクセスを長期間維持できます。 アクセス トークンの更新の詳細については、「アクセス トークンを更新する」に関する記事を参照してください。
: offline_access スコープが要求された場合にのみ発行されます。
id_token 顧客ユーザーを識別するために使用される JSON Web Token (JWT)。 アプリでは、トークンをデコードし、サインインしたユーザーに関する情報を読み取ることができます。 アプリではこの値をキャッシュして表示できます。また、機密クライアントでは認可にこのトークンを使用できます。 ID トークンに関する詳細については、ID トークンを参照してください。
: openid スコープが要求された場合にのみ発行されます。

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "invalid_request", 
    "error_description": "AADSTS901007: The client doesn't have consent for the requested scopes.\r\nTrace ID: b386ad47-23ae-4092-...-1000000\r\nCorrelation ID: 72f57f26-...-3fa6\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        50126 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "b386ad47-...-0000", 
    "correlation_id": "72f57f26-...-3fa6"
} 
パラメーター 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つ Microsoft Entra 固有のエラー コードのリスト。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。

発生する可能性があるエラー (可能性のある error パラメーターの値) を次に示します:

エラー値 説明
invalid_request 要求されたスコープに対する同意がないクライアント/アプリなど、要求パラメーターの検証に失敗しました。
invalid_grant 要求に含まれる継続トークンが無効です。
unauthorized_client 要求に含まれるクライアント ID が無効であるか、存在しません。
unsupported_grant_type 要求に含まれる許可の種類がサポートされていないか、正しくありません。

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

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

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

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

ユーザー属性値の形式

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

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

ユーザーによる入力の種類 送信された値の形式
TextBox  役職、ソフトウェア エンジニアなどの単一の値。
SingleRadioSelect 言語、ノルウェー語などの 1 つの値。 
CheckboxMultiSelect 趣味などの 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 管理センターの表示名は、API の displayName として参照されます。

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

サインイン API リファレンス

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

セキュリティ トークンを要求するために、アプリは 3 つのエンドポイント /initiate/challenge/token と対話します。

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

エンドポイント 説明
/initiate このエンドポイントは、サインイン フローを開始します。 アプリが既に存在するユーザー アカウントのユーザー名を使用して呼び出した場合、継続トークンを使用して成功応答を返します。 Microsoft Entra でサポートされていない認証方法の使用をアプリが要求した場合、このエンドポイント応答は、ブラウザーベースの認証フローを使用する必要があることをアプリに示すことができます。
/challenge アプリは、ID サービスでサポートされているチャレンジ型のリストを使用してこのエンドポイントを呼び出します。 ID サービスによってワンタイム パスコードが生成された後、選択されたチャレンジ チャネル (メールなど) に送信されます。 アプリがこのエンドポイントを繰り返し呼び出す場合、呼び出しが行われるたびに新しい OTP が送信されます。
/token このエンドポイントは、アプリから受信したワンタイム パスコードを検証した後、アプリにセキュリティ トークンを発行します。

サインイン チャレンジ型

この 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 
パラメーター 必須 Description
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 であると想定されます。

成功応答

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

HTTP/1.1 200 OK
Content-Type: application/json
{
    "continuation_token": "uY29tL2F1dGhlbnRpY..."
}
パラメーター 説明
continuation_token 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: b386ad47-23ae-4092-...-1000000\r\nCorrelation ID: 72f57f26-...-3fa6\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        901007 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "b386ad47-...-0000", 
    "correlation_id": "72f57f26-...-3fa6"
} 
パラメーター 説明
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 に要求します。 アプリが /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... 
パラメーター 必須 Description
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra 管理センターに登録したアプリケーション (クライアント) ID。
continuation_token はい Microsoft Entra が前の要求で返した継続トークン
challenge_type いいえ アプリがサポートする認証チャレンジ型文字列のスペース区切りのリスト (例: oob password redirect). リストには、常に redirect チャレンジ型が含まれている必要があります。 この値は、メールのワンタイム パスコードの場合は oob redirect、メールとパスワードの場合は password redirect であると想定されます。

成功応答

テナント管理者が 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 から返される継続トークン
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: b386ad47-23ae-4092-...-1000000\r\nCorrelation ID: 72f57f26-...-3fa6\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        901007 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "b386ad47-...-0000", 
    "correlation_id": "72f57f26-...-3fa6"
} 
パラメーター 説明
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: セキュリティ トークンの要求

アプリは /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 
パラメーター 必須 Description
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra 管理センターに登録したアプリケーション (クライアント) ID。
continuation_token はい Microsoft Entra が前の要求で返した継続トークン
grant_type はい この値は、メールとパスワードの認証方法の場合は password、メールのワンタイム パスコードの認証方法の場合は oob にする必要があります。
scope はい スコープのスペース区切りリスト。 すべてのスコープは、profile、*openid、email など、OpenID Connect (OIDC) と共に、単一のリソースからのものである必要があります。 アプリで ID トークンを発行するには、Microsoft Entra の openid スコープを含める必要があります。 アプリは、Microsoft Entra が更新トークンを発行するために offline_access スコープを含める必要があります。 Microsoft ID プラットフォームでのアクセス許可と同意に関する詳細をご覧ください。
password はい
(メールとパスワードの場合)
アプリが顧客ユーザーから収集するパスワード値。 {secure_password} をアプリケーションが顧客ユーザーから収集するパスワードの値を置き換えます。
oob はい
(メールのワンタイム パスコードの場合)
顧客ユーザーがメールで受け取ったワンタイム パスコード。 {otp_code} を顧客ユーザーがメールで受け取ったワンタイム パスコードに置き換えます。 ワンタイム パスコードを再送信するには、アプリで /challenge エンドポイントにもう一度要求を行う必要があります。

成功応答

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

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 ID でサポートされる種類はベアラーのみです。
scopes アクセス トークンが有効なスコープのスペース区切りのリスト。
expires_in アクセス トークンが有効な時間の長さ (秒単位) です。
access_token アプリが /token エンドポイントから要求したアクセス トークン。 アプリはこのアクセス トークンを使用して、Web API などのセキュリティで保護されたリソースへのアクセスを要求できます。
refresh_token OAuth 2.0 更新トークン。 現在のアクセス トークンの有効期限が切れた後に他のアクセス トークンを取得するために、アプリでこのトークンを使用できます。 更新トークンの有効期間は長期です。 これは、リソースへのアクセスを長期間維持できます。 アクセス トークンの更新の詳細については、「アクセス トークンを更新する」に関する記事を参照してください。
: offline_access スコープを要求した場合にのみ発行されます。
id_token 顧客ユーザーを識別するために使用される JSON Web Token (JWT)。 アプリはトークンをデコードして、サインインしたユーザーに関する情報を要求できます。 アプリではこの値をキャッシュして表示できます。また、機密クライアントでは認可にこのトークンを使用できます。 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: b386ad47-23ae-4092-...-1000000\r\nCorrelation ID: 72f57f26-...-3fa6\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        50126 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "b386ad47-...-0000", 
    "correlation_id": "72f57f26-...-3fa6"
} 
パラメーター 説明
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 つ以上が無効です。

エラー パラメーターの値が invalid_grant の場合、Microsoft Entra はその応答に suberror パラメーターを含めます。 invalid_grant エラーの suberror パラメーターに指定できる値を次に示します:

サブエラー値 説明
invalid_oob_value ワンタイム パスコードの値が無効です。 このサブエラーは、メールのワンタイム パスコードにのみ適用されます

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

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

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

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

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

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

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

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

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

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

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

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

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

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

パスワード リセット フローは、アプリがエンドポイントに /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 
パラメーター 必須 Description
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 を含める必要があります。

成功応答

例:

HTTP/1.1 200 OK
Content-Type: application/json
{
    "continuation_token": "uY29tL2F1dGhlbnRpY..."
}
パラメーター 説明
continuation_token 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: b386ad47-23ae-4092-...-1000000\r\nCorrelation ID: 72f57f26-...-3fa6\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        901007 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "b386ad47-...-0000", 
    "correlation_id": "72f57f26-...-3fa6"
} 
パラメーター 説明
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 に要求します。 アプリが /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... 
パラメーター 必須 Description
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
client_id はい Microsoft Entra 管理センターに登録したアプリケーション (クライアント) ID。
continuation_token はい Microsoft 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 から返される継続トークン
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: b386ad47-23ae-4092-...-1000000\r\nCorrelation ID: 72f57f26-...-3fa6\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        901007 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "b386ad47-...-0000", 
    "correlation_id": "72f57f26-...-3fa6"
} 
パラメーター 説明
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: ワンタイム パスコードを送信する

その後、アプリは /continue エンドポイントに POST 要求を行います。 要求には、前のステップで選択したユーザーの資格情報と、/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}
パラメーター 必須 Description
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
continuation_token はい Microsoft Entra が前の要求で返した継続トークン
client_id はい Microsoft Entra 管理センターに登録したアプリケーション (クライアント) ID。
grant_type はい 有効な値は oob だけです。
oob はい 顧客ユーザーがメールで受け取ったワンタイム パスコード。 {otp_code} を顧客ユーザーがメールで受け取ったワンタイム パスコードに置き換えます。 ワンタイム パスコードを再送信するには、アプリで /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 から返される継続トークン

エラー応答

例:

HTTP/1.1 400 Bad Request
Content-Type: application/json
{ 
    "error": "invalid_request", 
    "error_description": "AADSTS55200: The continuation_token is invalid.\r\nTrace ID: b386ad47-23ae-4092-...-1000000\r\nCorrelation ID: 72f57f26-...-3fa6\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        55200 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "b386ad47-...-0000", 
    "correlation_id": "72f57f26-...-3fa6"
} 
パラメーター 説明
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: 新しいパスワードを送信する

アプリはユーザーから新しいパスワードを収集し、/continue エンドポイントによって発行された継続トークンを使用して、/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}
パラメーター 必須 Description
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
continuation_token はい Microsoft 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 から返される継続トークン
poll_interval /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: b386ad47-23ae-4092-...-1000000\r\nCorrelation ID: 72f57f26-...-3fa6\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        901007 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "b386ad47-...-0000", 
    "correlation_id": "72f57f26-...-3fa6"
} 
パラメーター 説明
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: パスワード リセットの状態をポーリングする

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

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

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... 
パラメーター 必須 Description
tenant_subdomain はい 作成した外部テナントのサブドメイン。 URL では、{tenant_subdomain} を、ディレクトリ (テナント) サブドメインに置き換えます。 たとえば、プライマリ ドメインが contoso.onmicrosoft.com の場合は、contoso を使用します。 テナントのサブドメイン名がない場合は、テナントの詳細を読み取る方法を確認してください
continuation_token はい Microsoft Entra が前の要求で返した継続トークン
client_id はい Microsoft Entra 管理センターに登録したアプリケーション (クライアント) ID。

成功応答

例:

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

Microsoft Entra から返される可能性のある状態 (status パラメーターの可能な値) を次に示します:

エラー値 説明
succeeded パスワードのリセットが正常に完了しました。
failed パスワードのリセットに失敗しました。 アプリは、/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: b386ad47-23ae-4092-...-1000000\r\nCorrelation ID: 72f57f26-...-3fa6\r\nTimestamp: yyyy-...",
    "error_codes": [ 
        552003 
    ], 
    "timestamp": "yyyy-mm-dd 10:15:00Z",
    "trace_id": "b386ad47-...-0000", 
    "correlation_id": "72f57f26-...-3fa6"
} 
パラメーター 説明
error エラーの種類を分類し、エラーに対処するために使用できるエラー コード文字列。
error_description 認証エラーの原因を特定するのに役立つ特定のエラー メッセージ。
error_codes エラーの診断に役立つ Microsoft Entra 固有のエラー コードのリスト。
timestamp エラーが発生した時刻。
trace_id エラーの診断に役立つ要求の一意の識別子。
correlation_id コンポーネント間での診断に役立つ、要求の一意の識別子。

発生する可能性があるエラー (可能性のある error パラメーターの値) を次に示します:

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

次のステップ