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

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

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

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

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. サインイン フローで、サインイン 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 Entra が選んだ認証方法をサポートしていない場合、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 
パラメーター 必須 説明
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: 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 はい 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: 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 はい 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…
パラメーター 必須 説明
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}
パラメーター 必須 説明
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 管理センターで構成されました。

必要なユーザー属性

この応答は、名前、*年齢、電話 属性の値を送信するようにアプリに要求します。

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 から返される 後続トークン
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 はい 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: 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 から返される 後続トークン
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 
パラメーター 必須 説明
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: 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 要求に含まれる後続トークンが無効です。
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 言語、ノルウェー語 などの単一の値。 
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 
パラメーター 必須 説明
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: 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 このユーザー名は存在しません。
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... 
パラメーター 必須 説明
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: 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: セキュリティ トークンの要求

アプリは /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 はい 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: 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 つ以上が無効です。

エラー パラメーターの値が 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 
パラメーター 必須 説明
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: 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 このユーザー名は存在しません。
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... 
パラメーター 必須 説明
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: 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: ワンタイム パスコードを送信する

その後、アプリは /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}
パラメーター 必須 説明
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: 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: 新しいパスワードを送信する

アプリはユーザーから新しいパスワードを収集し、/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}
パラメーター 必須 説明
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: 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: パスワードのリセット状態をポーリングする

最後に、ユーザーの構成を新しいパスワードで更新すると多少の遅延が発生するため、アプリは /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... 
パラメーター 必須 説明
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: 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 後続トークン が期限切れです。