招待フローの作業サンプルはhereです。 WingTipGamesWebApplication
プロジェクトで
、InvitationController
コントローラクラスは、二つの動作方法、Create
とRedeem
を有しています。
Create
アクションメソッドは、招待されたユーザーの電子メールアドレスに署名済みの利用リンクを送信します。この償還リンクには、このメールアドレスが含まれています。招待コードを含むこともできます。
Redeem
アクションメソッドは、引き換えリンクを処理します。これは、verified_emailとしてWingtip Gamesアプリケーションのクライアントシークレット(WingTipGamesWebApplication
プロジェクトのStartup
クラスのCreateSelfIssuedToken
メソッドを参照してください)、への交換リンクから署名されたJWTで請求されます。ポリシー招待状を渡すこともできます。
招待状のポリシーはhereにあります。
招待ポリシーは、入力クレームとして verified_email項宣言:読み取り専用フィールドとして宣言され
<RelyingParty>
<DefaultUserJourney ReferenceId="Invitation" />
<TechnicalProfile Id="Invitation">
<InputTokenFormat>JWT</InputTokenFormat>
<CryptographicKeys>
<Key Id="client_secret" StorageReferenceId="WingTipGamesClientSecret" />
</CryptographicKeys>
<InputClaims>
<InputClaim ClaimTypeReferenceId="extension_VerifiedEmail" />
</InputClaims>
</TechnicalProfile>
</RelyingParty>
extension_verifiedEmail項タイプ、(それができないようにします
<BuildingBlocks>
<ClaimsSchema>
<ClaimType Id="extension_VerifiedEmail">
<DisplayName>Verified Email</DisplayName>
<DataType>string</DataType>
<DefaultPartnerClaimTypes>
<Protocol Name="OAuth2" PartnerClaimType="verified_email" />
<Protocol Name="OpenIdConnect" PartnerClaimType="verified_email" />
<Protocol Name="SAML2" PartnerClaimType="http://schemas.wingtipb2c.net/identity/claims/verifiedemail" />
</DefaultPartnerClaimTypes>
<UserInputType>Readonly</UserInputType>
</ClaimType>
</ClaimsSchema>
</BuildingBlocks>
:)エンドユーザによって修正すること、
verified_email入力項にマッピングされます
招待状ユーザー旅行はhereにあります。
が
<UserJourney Id="Invitation">
<OrchestrationSteps>
...
<OrchestrationStep Order="2" Type="ClaimsExchange">
<ClaimsExchanges>
...
<ClaimsExchange Id="LocalAccountRegistrationExchange" TechnicalProfileReferenceId="LocalAccount-Registration-VerifiedEmail" />
</ClaimsExchanges>
</OrchestrationStep>
</OrchestrationSteps>
</UserJourney>
LocalAccount-登録-VerifiedEmail技術的なプロファイルが持つローカルアカウントを登録します。
は
招待ユーザーの旅の第二のオーケストレーションのステップは、LocalAccount-登録-VerifiedEmail技術的なプロファイルを実行します確認済みのメールアドレス:
<TechnicalProfile Id="LocalAccount-Registration-VerifiedEmail">
<DisplayName>WingTip Account</DisplayName>
<Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.SelfAssertedAttributeProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" />
<Metadata>
<Item Key="ContentDefinitionReferenceId">api.localaccount.registration</Item>
<Item Key="IpAddressClaimReferenceId">IpAddress</Item>
<Item Key="language.button_continue">Create</Item>
</Metadata>
<CryptographicKeys>
<Key Id="issuer_secret" StorageReferenceId="TokenSigningKeyContainer" />
</CryptographicKeys>
<InputClaimsTransformations>
<InputClaimsTransformation ReferenceId="CreateEmailFromVerifiedEmail" />
</InputClaimsTransformations>
<InputClaims>
<InputClaim ClaimTypeReferenceId="extension_VerifiedEmail" />
</InputClaims>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="extension_VerifiedEmail" Required="true" />
<OutputClaim ClaimTypeReferenceId="newPassword" Required="true" />
<OutputClaim ClaimTypeReferenceId="reenterPassword" Required="true" />
<OutputClaim ClaimTypeReferenceId="displayName" Required="true" />
<OutputClaim ClaimTypeReferenceId="authenticationSource" DefaultValue="localAccountAuthentication" />
<OutputClaim ClaimTypeReferenceId="executed-SelfAsserted-Input" DefaultValue="true" />
<OutputClaim ClaimTypeReferenceId="newUser" />
<OutputClaim ClaimTypeReferenceId="objectId" />
<OutputClaim ClaimTypeReferenceId="sub" />
<OutputClaim ClaimTypeReferenceId="userPrincipalName" />
</OutputClaims>
<ValidationTechnicalProfiles>
<ValidationTechnicalProfile ReferenceId="AzureActiveDirectoryStore-WriteUserByEmail-ThrowIfExists" />
</ValidationTechnicalProfiles>
<UseTechnicalProfileForSessionManagement ReferenceId="SSOSession-AzureActiveDirectory" />
</TechnicalProfile>
ローカルアカウントに対する招待コード、あなたは次の条件を満たす必要があります。
- 請求スキーマ
- に「extension_InvitationCode」の主張を追加招待ポリシー
- への入力クレームが入力主張としてそれを追加して、それを追加します。 LocalAccount-登録-VerifiedEmail技術的なプロファイルへ
- AzureActiveDirectoryStore-WriteUserByEmail-ThrowIfExist技術的なプロファイルに永続主張としてそれを追加
ようこそスタックオーバーフロー。あなたはすでにこれをやってみましたか? [良い質問をするにはどうすればいいですか](https://stackoverflow.com/help/how-to-ask)をご覧ください。スタックオーバーフローはコーディングサービスではありません。 ***あなたの問題を研究し、投稿する前に自分でコードを書いてみることをお勧めします***。 *特定の*に固執する場合は、[最小限の、完全で検証可能な例](https://stackoverflow.com/help/mcve)とあなたが試したことの概要を含めてお手伝いしてください。 – FluffyKitten
@FluffyKittenそれは具体的ではありませんか?最初の文は非常に具体的な質問です。そして私が追加するかもしれない良い質問:)ありがとう、マイクD. – spottedmahn
@spottedmahn質問は私のコメント以来編集されています。しかし、独自のものだけでは十分ではありません。最初のコメントの残りの要件を参照してください。 – FluffyKitten