Microsoft が管理する世界のデータ センター ネットワークを介してアプリケーションとサービスを構築、配置、および管理するインフラストラクチャおよびクラウド コンピューティング プラットフォーム。
Azure AD B2C にてログイン時に入力するユーザIDを2つに分けて入力するUIとしたい
現在、 Azure AD B2C を用いた認証システムを構築しています。
前提条件
- 現在開発しているシステムでは、会員番号が番号1と番号2の2つに分かれている
- 会員番号は別システムにて採番されており、採番アルゴリズムの修正は不可
- 番号1と番号2の組はユニークであるが、番号1/番号2内での重複がある
- Azure AD B2C へのユーザ生成は、ユーザ名を「番号1_番号2」の形式で生成する想定(別途バッチ処理にて生成予定)
問い合わせ内容
ログインする際に、ユーザにユーザ名を「番号1_番号2」の形式で入力させるのではなく、入力窓を番号1と2で別々で設けるUIとしたい。
現在、カスタムポリシー スターターパック内の TrustFrameworkBase.xml に、以下の修正を加えたところ、1つ目の画面にて、番号1と番号2を要求し、次の画面にてパスワードを要求することで、ある程度達成することはできているものの、画面を分けずに、同一の画面内に番号1・番号2・パスワードの入力窓を設け、ログインを可能としたい。
ClaimType および ClaimsTransformation の定義は以下です。
Azure
-
Jyotishree Moharana • 1,945 評価のポイント • Microsoft 外部スタッフ • モデレーター
2025-04-24T14:58:01.7933333+00:00 回答は英語から翻訳していますので、文法上の誤りについてはご容赦ください。
目標は、同じページから number1、number2、password を収集し、ユーザーを認証することです。
以下の手順をお試しください。
- TrustFrameworkExtensions.xml で、number1 と number2 を格納するためのカスタムクレームを定義します。
- 認証に使用する結合されたユーザー名を保持する別のクレームを作成します。
- オーケストレーションステップを変更し、number1、number2、password を収集します。TrustFrameworkExtensions.xml 内のセルフアサート技術プロファイルを更新し、number1、number2、password のフィールドを追加します。
<InputClaims>
<InputClaim ClaimTypeReferenceId="number1" />
<InputClaim ClaimTypeReferenceId="number2" />
<InputClaim ClaimTypeReferenceId="password" />
</InputClaims>
- claimstransformation を追加し、number1 と number2 を結合して結合されたユーザー名を作成します。
<ClaimsTransformation Id="CombineNumber1AndNumber2" TransformationMethod="FormatStringClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="number1" TransformationClaimType="inputClaim1" />
<InputClaim ClaimTypeReferenceId="number2" TransformationClaimType="inputClaim2" />
</InputClaims>
<InputParameters>
<InputParameter Id="stringFormat">{0}_{1} InputParameters>
<OutputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="combinedUsername" TransformationClaimType="outputClaim" />
</OutputClaims>
</ClaimsTransformation>
- 結合されたユーザー名を使用して認証を実行します。
ローカル アカウントのサインイン技術プロファイルで、変換された結合されたユーザー名の参照を追加します。
- 新しく定義されたセルフアサート技術プロファイルと LocalAccountSigninWithCombinedUsername 技術プロファイルを組み込むには、ユーザー ジャーニーの OrchestrationStep を更新する必要があります。
-
Jyotishree Moharana • 1,945 評価のポイント • Microsoft 外部スタッフ • モデレーター
2025-04-28T16:14:00.7866667+00:00 英語から翻訳しておりますので、文法上の誤りなどご容赦ください。
ご提供いただいた情報がお役に立てたか確認させていただくため、ご連絡いたしました。ご質問やご不明な点がございましたら、お気軽にお問い合わせください。
-
Jyotishree Moharana • 1,945 評価のポイント • Microsoft 外部スタッフ • モデレーター
2025-04-29T10:50:02.6+00:00 英語から翻訳しておりますので、文法上の誤りなどご容赦ください。
ご提供いただいた情報がお役に立てたか確認させていただくため、ご連絡いたしました。ご質問やご不明な点がございましたら、お気軽にお問い合わせください。
-
Inuma, Yusuke • 0 評価のポイント
2025-04-30T00:32:36.8433333+00:00 ClaimsTransformation と TechnicalProfile を以下に設定したところ、同一の画面に number1, number2, password の入力窓を表示することはできましたが、サインインしようとすると Invalid username or password. と表示されてしまいます。
<ClaimsTransformation Id="CombineNumber1AndNumber2" TransformationMethod="FormatStringMultipleClaims"> <InputClaims> <InputClaim ClaimTypeReferenceId="number1" TransformationClaimType="inputClaim1" /> <InputClaim ClaimTypeReferenceId="number2" TransformationClaimType="inputClaim2" /> </InputClaims> <InputParameters> <InputParameter Id="stringFormat" DataType="string" Value="{0}_{1}" /> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation><TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email"> <DisplayName>Local Account Signin</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <Item Key="SignUpTarget">SignUpWithLogonEmailExchange</Item> <Item Key="setting.operatingMode">Username</Item> <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item> <Item Key="setting.showSignupLink">false</Item> <Item Key="setting.forgotPasswordLinkLocation">None</Item> </Metadata> <IncludeInSso>false</IncludeInSso> <InputClaims> <InputClaim ClaimTypeReferenceId="number1" /> <InputClaim ClaimTypeReferenceId="number2" /> <InputClaim ClaimTypeReferenceId="password" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="number1" Required="true" /> <OutputClaim ClaimTypeReferenceId="number2" Required="true" /> <OutputClaim ClaimTypeReferenceId="signInName" Required="true" /> <OutputClaim ClaimTypeReferenceId="password" Required="true" /> <OutputClaim ClaimTypeReferenceId="objectId" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CombineNumber1AndNumber2" /> </OutputClaimsTransformations> <ValidationTechnicalProfiles> <ValidationTechnicalProfile ReferenceId="login-NonInteractive" /> </ValidationTechnicalProfiles> <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" /> </TechnicalProfile>可能であれば、手順5, 6の認証の実行や OrchestrationStep の設定方法に関しても、カスタムポリシーを例示いただくことは可能でしょうか。どうぞよろしくお願いいたします。
-
Inuma, Yusuke • 0 評価のポイント
2025-05-13T01:27:25.7233333+00:00 こちらご確認いただけておりますでしょうか。
こちらの都合で恐縮ですが、開発中のサービスのリリース時期が近づいているため、可能な限り早く事象を解決したいと考えております。
お忙しいところ恐縮ですが、できるだけ早くご回答をいただけますと幸いです。
-
Jyotishree Moharana • 1,945 評価のポイント • Microsoft 外部スタッフ • モデレーター
2025-05-13T10:48:31.4833333+00:00 英語から翻訳していますので、文法的な誤りがある場合はご容赦ください。
返信が遅くなり申し訳ございません。以下のとおりクレーム変換を修正していただけますでしょうか。
<ClaimsTransformation Id="CreateSignInNameFromNumberParts" TransformationMethod="FormatStringClaim">
<InputClaims>
<InputClaim ClaimTypeReferenceId="number1" TransformationClaimType="inputClaim1" /> <InputClaim ClaimTypeReferenceId="number2" TransformationClaimType="inputClaim2" /></InputClaims>
<InputParameters>
<InputParameter Id="stringFormat">{0}_{1}</InputParameter></InputParameters>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="outputClaim" /></OutputClaims>
</ClaimsTransformation>
-
削除済み
このコメントは当社の行動規範に違反したため削除されました。 アクションを実行する前にこのコメントを手動で報告したか、自動検出機能により特定しました。 詳細については、当社の行動規範を参照してください。
-
Inuma, Yusuke • 0 評価のポイント
2025-05-14T02:40:02.65+00:00 ありがとうございます。ご提示いただいたクレーム変換を修正し、カスタムポリシーをアップロードしようとしたところ、以下のバリデーションエラーが発生しました。
Validation failed: 1 validation error(s) found in policy "B2C_1A_TRUSTFRAMEWORKBASE" of tenant "XXX.onmicrosoft.com".Schema validation error found at line 356 col 12 in policy "B2C_1A_TRUSTFRAMEWORKBASE" of tenant "XXX.onmicrosoft.com": The required attribute 'DataType' is missing.Schema validation error found at line 356 col 12 in policy "B2C_1A_TRUSTFRAMEWORKBASE" of tenant "XXX.onmicrosoft.com": The required attribute 'DataType' is missing.アップロードしたカスタムポリシーの356行目は以下になります。
<InputParameter Id="stringFormat">{0}_{1}</InputParameter>また、OrchestrationStep の修正も必要と考えておりますが、具体例をご提示いただけないでしょうか。
どうぞよろしくお願いいたします。
-
Anonymous
2025-05-14T03:45:53.24+00:00 Inuma, Yusuke, 必要な属性 'DataType' が欠落しているエラーは、<ClaimsTransformation> 定義に <InputParameter> 要素が DataType 属性を含めなければならないためです。
問題を解決するために、以下を試してください:
- ClaimsTransformationを更新して、次のようにDataType="string"を含めてください:
<ClaimsTransformation Id="CreateSignInNameFromNumberParts" TransformationMethod="FormatStringClaim"> <InputClaims> <InputClaim ClaimTypeReferenceId="number1" TransformationClaimType="inputClaim1" /> <InputClaim ClaimTypeReferenceId="number2" TransformationClaimType="inputClaim2" /> </InputClaims> <InputParameters> <InputParameter Id="stringFormat" DataType="string">{0}_{1}</InputParameter> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation>- オーケストレーションステップも更新し、これらのステップがユーザージャーニーに含まれていることを確認してください。
<!-- Step 1: Collect number1, number2, password --> <OrchestrationStep Order="1" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="CollectCreds" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" /> </ClaimsExchanges> </OrchestrationStep> <!-- Step 2: Authenticate using combined signInName --> <OrchestrationStep Order="2" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="SignInWithCombinedUsername" TechnicalProfileReferenceId="login-NonInteractive" /> </ClaimsExchanges> </OrchestrationStep>英語から翻訳しているので、文法の誤りがあったらごめんなさい。
-
Inuma, Yusuke • 0 評価のポイント
2025-05-14T10:29:48.99+00:00 ありがとうございます。修正したカスタムポリシーをアップロードすることができました。
しかし、その後ログイン画面を表示しようとしたところ、以下のエラーメッセージが表示されてしまいます。
The page cannot be displayed because an internal server error has occurred.
ご提示いただいたOrchestrationStepに問題がないか再度ご確認いただけないでしょうか。
-
Anonymous
2025-05-14T11:35:19.5066667+00:00 OrchestrationSteps または TechnicalProfiles のいずれかに設定ミスがあるに違いありません(一般的には、入力/出力の主張が不足している、参照が壊れている、または変換が正しく適用されていないためです)。
- 自己主張型技術プロフィールを確認してください
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email"> <DisplayName>Local Account Signin</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider" /> <Metadata> <Item Key="setting.operatingMode">Username</Item> <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item> <Item Key="setting.showSignupLink">false</Item> <Item Key="setting.forgotPasswordLinkLocation">None</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="number1" /> <InputClaim ClaimTypeReferenceId="number2" /> <InputClaim ClaimTypeReferenceId="password" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="number1" Required="true" /> <OutputClaim ClaimTypeReferenceId="number2" Required="true" /> <OutputClaim ClaimTypeReferenceId="password" Required="true" /> <!-- Combined output claim --> <OutputClaim ClaimTypeReferenceId="signInName" Required="true" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="CreateSignInNameFromNumberParts" /> </OutputClaimsTransformations> <ValidationTechnicalProfiles> <ValidationTechnicalProfile ReferenceId="login-NonInteractive" /> </ValidationTechnicalProfiles> <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" /> </TechnicalProfile>- 必ずこれに必要なDataType属性が含まれていることを確認してください:
<ClaimsTransformation Id="CreateSignInNameFromNumberParts" TransformationMethod="FormatStringClaim"> <InputClaims> <InputClaim ClaimTypeReferenceId="number1" TransformationClaimType="inputClaim1" /> <InputClaim ClaimTypeReferenceId="number2" TransformationClaimType="inputClaim2" /> </InputClaims> <InputParameters> <InputParameter Id="stringFormat" DataType="string">{0}_{1}</InputParameter> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation>- ユーザー ジャーニーのオーケストレーション ステップを更新してください
ここは、オーケストレーションフローに問題がある場合(例えば、間違ったプロファイル参照や欠落したクレームなど)に、内部サーバーエラーがよく発生する場所です。
<OrchestrationSteps> <!-- Step 1: Collect user input --> <OrchestrationStep Order="1" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="CollectCreds" TechnicalProfileReferenceId="SelfAsserted-LocalAccountSignin-Email" /> </ClaimsExchanges> </OrchestrationStep> <!-- Step 2: Authenticate using the combined username --> <OrchestrationStep Order="2" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="SignInWithCombinedUsername" TechnicalProfileReferenceId="login-NonInteractive" /> </ClaimsExchanges> </OrchestrationStep> <!-- Optional: Session management --> <OrchestrationStep Order="3" Type="SendClaims" /> </OrchestrationSteps>"内部サーバーエラー"は通常次のような場合に発生します:
- 技術プロファイルが誤って参照されました(IDが間違っているか、欠落しています)。
- ステップ間で必要な請求が提供されていませんでした。
- ClaimsTransformationが誤って構成されています(例えば、DataTypeが欠落しています)。
- オーケストレーションステップが予想されるフローと一致していません。
-
Inuma, Yusuke • 0 評価のポイント
2025-05-15T07:12:33.3666667+00:00 ご回答いただきありがとうございます。
カスタムポリシーを修正したところ、同一の画面内に番号1・番号2・パスワードの入力窓を表示することが出来ました。
しかし、ログインしようとしたところ以下のエラーメッセージが表示されてしまいます。
AADSTS900561: The endpoint only accepts POST, OPTIONS requests. Received a GET request.
何度も申し訳ございませんが、再度ご確認いただけないでしょうか。
-
Anonymous
2025-05-15T08:54:41.44+00:00 Inuma, Yusuke, エラーは、オーケストレーションステップでlogin-NonInteractiveを直接呼び出しているためかもしれません。その技術プロファイルはPOSTでのみ動作し、直接呼び出す(GETとして)とこのエラーが発生します。
エラーを解決するには、Self-Assertedステップ内でValidationTechnicalProfileとしてのみlogin-NonInteractiveを使用してください。
オーケストレーションの例:
<OrchestrationStep Order="1" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="CollectAndValidate" TechnicalProfileReferenceId="SelfAsserted-CollectCombinedSignIn" /> </ClaimsExchanges> </OrchestrationStep> <OrchestrationStep Order="2" Type="SendClaims" />SelfAsserted-CollectCombinedSignInプロファイルの中に:
<ValidationTechnicalProfiles> <ValidationTechnicalProfile ReferenceId="login-NonInteractive" /> </ValidationTechnicalProfiles>上記の変更の後、number1、number2、およびパスワードのための単一の画面が表示され、signInNameはnumber1 + number2から生成され、login-NonInteractiveが検証の内部でPOSTとしてトリガーされます。
-
Inuma, Yusuke • 0 評価のポイント
2025-05-16T01:54:08.6766667+00:00 返信いただきありがとうございます。
テクニカルプロファイル SelfAsserted-CollectCombinedSignIn の詳細が不明でしたため、SelfAsserted-LocalAccountSignin-Email のテクニカルプロファイル内にご提示いただいた ValidationTechnicalProfiles を追記しましたところ、ログイン時に Invalid username or password. エラーが発生しました。
差し支えなければ、 SelfAsserted-CollectCombinedSignIn テクニカルプロファイルもご共有いただけないでしょうか。
どうぞよろしくお願いいたします。
-
Anonymous
2025-05-16T03:44:37.43+00:00 こんにちは Inuma, Yusuke,
最初の要求が解決されたので、それは画面を分けずに同じ画面で番号1、番号2、およびパスワードを入力するということです。新しいエラー「無効なユーザー名またはパスワード」については、現在のXMLなどのすべての詳細を含めてフォーラムに別の質問として投稿することをお勧めします。これにより、私たちや他のコミュニティメンバーがより効果的に追跡でき、集中した回答を提供できるようになります。
-
Inuma, Yusuke • 0 評価のポイント
2025-05-16T05:28:09.2833333+00:00 すみません。同一の画面に番号1・番号2・パスワードの入力窓を設け、それらに入力された情報を使ってユーザがログインできることまで解決いただきたいです。
-
Anonymous
2025-05-16T05:36:18.7+00:00 Inuma, Yusuke「無効なユーザー名またはパスワード」とAADSTS900561(GETではなくPOST)エラーを修正するには、この正しいSelfAsserted-CollectCombinedSignIn技術プロファイルを使用してください:
<TechnicalProfile Id="SelfAsserted-CollectCombinedSignIn"> <DisplayName>Combined Sign In</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.SelfAssertedAttributeProvider" /> <Metadata> <Item Key="ContentDefinitionReferenceId">api.selfasserted</Item> <Item Key="language.button_continue">Sign in</Item> <Item Key="EnforcePasswordPolicy">true</Item> <Item Key="setting.operatingMode">UsernameAndPassword</Item> </Metadata> <IncludeInSso>false</IncludeInSso> <InputClaimsTransformations> <InputClaimsTransformation ReferenceId="CreateSignInNameFromNumbers" /> </InputClaimsTransformations> <OutputClaims> <OutputClaim ClaimTypeReferenceId="Number1" Required="true" /> <OutputClaim ClaimTypeReferenceId="Number2" Required="true" /> <OutputClaim ClaimTypeReferenceId="password" Required="true" /> <OutputClaim ClaimTypeReferenceId="signInName" /> </OutputClaims> <ValidationTechnicalProfiles> <ValidationTechnicalProfile ReferenceId="login-NonInteractive" /> </ValidationTechnicalProfiles> <UseTechnicalProfileForSessionManagement ReferenceId="SM-AAD" /> </TechnicalProfile>サインイン名を生成するためのクレーム変換も定義します:
<ClaimsTransformation Id="CreateSignInNameFromNumbers" TransformationMethod="FormatString"> <InputClaims> <InputClaim ClaimTypeReferenceId="Number1" TransformationClaimType="inputClaim1" /> <InputClaim ClaimTypeReferenceId="Number2" TransformationClaimType="inputClaim2" /> </InputClaims> <InputParameters> <InputParameter Id="stringFormat">{0}{1}@yourtenant.onmicrosoft.com</InputParameter> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation>ログイン非対話型は、オーケストレーションステップで直接使用するのではなく、ValidationTechnicalProfiles内でのみ使用されることを確認してください。
これにより、サインインがPOST経由で機能し、単一の画面でエラーを回避できます。
-
Inuma, Yusuke • 0 評価のポイント
2025-05-16T10:32:07.4433333+00:00 修正したカスタムポリシーをアップロードし、ログイン画面にアクセスしたところ以下のようなエラー画面が表示されました。> 申し訳ありません。サインインで問題が発生しました。> ここに挙げたエラーは自動的に追跡されますが、問題が解決しない場合には遠慮なくご連絡ください。また、同じ操作をもう一度お試しになることもお勧めします。
SelfAsserted-CollectCombinedSignInに問題がないか再度ご確認いただけますと幸いです。
-
Anonymous
2025-05-16T10:57:14.71+00:00 次のクレームタイプがあなたのClaimsSchemaに存在することを確認してください:
<ClaimType Id="Number1" /><ClaimType Id="Number2" /> <ClaimType Id="signInName" /><ClaimType Id="password" />Number1とNumber2を組み合わせてサインイン名を作成します:
<ClaimsTransformation Id="CreateSignInNameFromNumbers" TransformationMethod="FormatString"> <InputClaims> <InputClaim ClaimTypeReferenceId="Number1" TransformationClaimType="inputClaim1" /> <InputClaim ClaimTypeReferenceId="Number2" TransformationClaimType="inputClaim2" /> </InputClaims> <InputParameters> <InputParameter Id="stringFormat">{0}{1}@yourtenant.onmicrosoft.com</InputParameter> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="signInName" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation>SelfAsserted-CollectCombinedSignIn:
<TechnicalProfile Id="SelfAsserted-CollectCombinedSignIn"> <InputClaimsTransformations> <InputClaimsTransformation ReferenceId="CreateSignInNameFromNumbers" /> </InputClaimsTransformations> <OutputClaims> <OutputClaim ClaimTypeReferenceId="Number1" Required="true" /> <OutputClaim ClaimTypeReferenceId="Number2" Required="true" /> <OutputClaim ClaimTypeReferenceId="password" Required="true" /> <OutputClaim ClaimTypeReferenceId="signInName" /> </OutputClaims> <ValidationTechnicalProfiles> <ValidationTechnicalProfile ReferenceId="login-NonInteractive" /> </ValidationTechnicalProfiles> </TechnicalProfile>login-NonInteractive:
<TechnicalProfile Id="login-NonInteractive"> <Metadata> <Item Key="Operation">Login</Item> <Item Key="ClientId">ProxyApp-ClientId</Item> <Item Key="IdTokenAudience">IEFApp-ClientId</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="signInName" /> <InputClaim ClaimTypeReferenceId="password" /> </InputClaims> </TechnicalProfile>オーケストレーションステップを追加する:
<OrchestrationStep Order="1" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="LocalSignIn" TechnicalProfileReferenceId="SelfAsserted-CollectCombinedSignIn" /> </ClaimsExchanges> </OrchestrationStep>デバッグを有効にする:
<Diagnostics Enabled="true" IncludeDebugOutput="true" />Application Insightsのログを確認するか、詳細なエラー情報のためにApp Insightsデバッグモードでポリシーを実行してください。
-
Anonymous
2025-05-19T03:57:48.7633333+00:00 最後の返信についてお返事をいただいていないので、解決策があるかどうか確認しています。もし解決策がある場合は、それをコミュニティと共有してください。他の人に役立つ可能性があります。そうでない場合は、詳細をお知らせください。私たちが助けるように努めます。
-
Inuma, Yusuke • 0 評価のポイント
2025-05-19T09:30:30.4166667+00:00 ご回答いただきありがとうございます。
カスタムポリシーを更新しアップロードしようとしましたところ、以下のメッセージが表示されました。
The required "Protocol" element is missing from with id "login-NonInteractive" in policy "B2C_1A_TrustFrameworkBase" of tenant "XXX.onmicrosoft.com".
また、以下のDiagnosticsはカスタムポリシーのどこに記載すれば良いかご教示いただけないでしょうか。
<Diagnostics Enabled="true" IncludeDebugOutput="true" />どうぞよろしくお願いいたします。
-
Anonymous
2025-05-19T09:44:15.4833333+00:00 Inuma, Yusuke, そのエラーは、あなたのログイン-非対話型テクニカルプロファイルに必須の<Protocol>要素が欠けているためです。
以下のようにログイン非対話型プロファイルを更新してください:
<TechnicalProfile Id="login-NonInteractive"> <DisplayName>Login (Non Interactive)</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.LocalAccountProvider" /> <Metadata> <Item Key="Operation">Login</Item> <Item Key="RaiseErrorIfClaimsPrincipalDoesNotExist">true</Item> <Item Key="UserMessageIfClaimsPrincipalDoesNotExist">Invalid username or password.</Item> <Item Key="UserMessageIfInvalidPassword">Invalid username or password.</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="signInName" /> <InputClaim ClaimTypeReferenceId="password" /> </InputClaims> <OutputClaims> <OutputClaim ClaimTypeReferenceId="objectId" /> <OutputClaim ClaimTypeReferenceId="userPrincipalName" /> <OutputClaim ClaimTypeReferenceId="authenticationSource" /> </OutputClaims> <IncludeTechnicalProfile ReferenceId="SM-AAD" /> </TechnicalProfile>- これをあなたのTrustFrameworkExtensions.xmlに追加してください。そして、ポリシーを再アップロードしてください。
-
Anonymous
2025-05-20T09:53:12.5466667+00:00 Inuma, Yusuke, 最後の返信についてお返事をいただいていないので、解決策があるかどうか確認しています。もし解決策がある場合は、それをコミュニティと共有してください。他の人に役立つ可能性があります。そうでない場合は、詳細をお知らせください。私たちが助けるように努めます。
-
Inuma, Yusuke • 0 評価のポイント
2025-05-21T02:00:26.5266667+00:00 カスタムポリシーを修正することでアップロードすることができました。
しかし、有効な番号1・番号2・パスワードを入力してログインしようとしたところ、 Unable to validate the information provided. というエラーメッセージが表示されました。
なにか設定が欠けているところはないでしょうか。
どうぞよろしくお願いいたします。
-
Anonymous
2025-05-21T03:49:01.3066667+00:00 Inuma, Yusuke, 生成されたサインイン名はAzure AD B2Cのユーザーと一致しません。そのため、login-NonInteractiveは認証に失敗します。
請求の変換を確認してください:
<InputParameter Id="stringFormat">{0}{1}@yourdomain.com</InputParameter>- ******@yourdomain.comのようなメールアドレスを持つユーザーが存在するか確認してください。
- もしNumber1が123、Number2が456、ドメインがcontoso.comの場合、ユーザーは次のようにする必要があります: ******@contoso.com
ユーザーが正しいsignInNameで存在すれば、ログインは成功します。
-
Anonymous
2025-05-22T08:29:29.85+00:00 Inuma, Yusuke, 最後の返信についてお返事をいただいていないので、解決策があるかどうか確認しています。もし解決策がある場合は、それをコミュニティと共有してください。他の人に役立つ可能性があります。そうでない場合は、詳細をお知らせください。私たちが助けるように努めます
-
Inuma, Yusuke • 0 評価のポイント
2025-05-22T10:51:47.5133333+00:00 メールアドレスではなく、userNameで照合することは可能でしょうか。
userNameは意図した通りNumber1とNumber2を連結した形となっていますが、
メールアドレスはランダムに生成されているようで、照合に使用することは難しそうです
(例:******@XXXXXXXX.onmicrosoft.com)。
-
Anonymous
2025-05-27T07:24:45.0233333+00:00 はい、Azure AD B2Cのカスタムポリシーでは、メールアドレスの代わりにuserName(Number1とNumber2の連結)で一致させることは絶対に可能です。
- B2Cポータルにカスタム属性userNameを作成する.
- TrustFrameworkExtensions.xml内でuserNameを定義してください。
<ClaimType Id="userName"> <DisplayName>User Name</DisplayName> <DataType>string</DataType> <DefaultPartnerClaimTypes> <Protocol Name="OAuth2" PartnerClaimType="userName" /> </DefaultPartnerClaimTypes> <UserHelpText>Your custom user name</UserHelpText> </ClaimType>- Number1とNumber2からユーザー名を生成する
<ClaimsTransformation Id="CreateUserNameFromNumbers" TransformationMethod="FormatString"> <InputClaims> <InputClaim ClaimTypeReferenceId="Number1" TransformationClaimType="inputClaim1" /> <InputClaim ClaimTypeReferenceId="Number2" TransformationClaimType="inputClaim2" /> </InputClaims> <InputParameters> <InputParameter Id="stringFormat">{0}{1}</InputParameter> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="userName" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation>- サインイン技術プロファイル(SelfAsserted-CollectCombinedSignIn)で識別子としてuserNameを使用してください。
- カスタム検証プロファイルを使用してユーザー名でログインを検証します。入力:ユーザー名(extension_userNameにマップされる)とパスワード、ユーザーを検索し、パスワードを検証します。
- サインイン名や自動生成されたメールアドレスを使用しないでください。あなた自身のユーザー名を使用してログインを完全に管理します。
-
Anonymous
2025-05-28T09:32:05.0333333+00:00 Inuma, Yusuke, こんにちは、私たちはあなたからの返事をまだ受け取っていないので、フォローアップしています。問題の解決策を見つけることができましたか?もし解決できたなら、その手順をここで共有していただけると、同じ問題に直面している他の人たちに役立つかもしれません。まだ解決していない場合は、詳細を返信してください。喜んでさらにお手伝いします。ありがとうございます!
-
Anonymous
2025-05-30T04:38:31.91+00:00 Inuma, Yusuke, こんにちは、私たちはあなたからの返事をまだ受け取っていないので、フォローアップしています。問題の解決策を見つけることができましたか?もし解決できたなら、その手順をここで共有していただけると、同じ問題に直面している他の人たちに役立つかもしれません。まだ解決していない場合は、詳細を返信してください。喜んでさらにお手伝いします。ありがとうございます!
サインインしてコメントする