[英]Negative Scenario on login
在登錄過程中,在嘗試輸入錯誤密碼時,我需要更改用戶目錄中的一些標志和屬性,然后才能在用戶旅程中引發任何錯誤。 一旦 login-nonInteractive 拋出密碼異常,用戶旅程就會中斷,我們如何實現這一點?
在登錄技術配置文件中稱為驗證技術配置文件的login-noninteractive
技術配置文件中,設置"ContinueOnError"="true"
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email"> <ValidationTechnicalProfiles> <ValidationTechnicalProfile ReferenceId="login-NonInteractive" "ContinueOnError"="true"/> </ValidationTechnicalProfiles> </TechnicalProfile>
在login-noninteractive
non-interactive 技術配置文件中,為objectId
設置一個defaultValue
,例如"DefaultValue"="badPassword"
<TechnicalProfile Id="login-NonInteractive"> <OutputClaims> <OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="oid" "DefaultValue"="badPassword"/> </TechnicalProfile>
在您的登錄技術配置文件中,將先決條件應用於下一個驗證技術配置文件,以便它僅在objectId!=badPassword
執行。 這里調用一個技術配置文件來執行錯誤密碼場景的工作量。
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email"> <ValidationTechnicalProfiles> <ValidationTechnicalProfile ReferenceId="login-NonInteractive" "ContinueOnError"="true"/> <ValidationTechnicalProfile ReferenceId="Run-Custom-BadPwd-Logic"> <Preconditions> <Precondition Type="ClaimEquals" ExecuteActionsIf="false"> <Value>objectId</Value> <Value>badPassword</Value> <Action>SkipThisValidationTechnicalProfile</Action> </Precondition> </Preconditions> </ValidationTechnicalProfile> </ValidationTechnicalProfiles> </TechnicalProfile>
現在我們需要停止錯誤密碼的流程。 skip if objectId!=badPassword
,則調用另一個帶有前置條件的驗證技術配置文件。
<TechnicalProfile Id="SelfAsserted-LocalAccountSignin-Email"> <ValidationTechnicalProfiles> <ValidationTechnicalProfile ReferenceId="login-NonInteractive" "ContinueOnError"="true"/> <ValidationTechnicalProfile ReferenceId="Run-Custom-BadPwd-Logic"> <Preconditions> <Precondition Type="ClaimEquals" ExecuteActionsIf="false"> <Value>objectId</Value> <Value>badPassword</Value> <Action>SkipThisValidationTechnicalProfile</Action> </Precondition> </Preconditions> </ValidationTechnicalProfile> <ValidationTechnicalProfile ReferenceId="Block-BadPwd-User"> <Preconditions> <Precondition Type="ClaimEquals" ExecuteActionsIf="false"> <Value>objectId</Value> <Value>badPassword</Value> <Action>SkipThisValidationTechnicalProfile</Action> </Precondition> </Preconditions> </ValidationTechnicalProfile> </ValidationTechnicalProfiles> </TechnicalProfile>
這個(Block-BadPwd-User)應該調用一個聲明轉換技術配置文件,它執行一個 boolean 斷言。 首先調用一個聲明轉換來比較objectId
和"badPassword"
, output 一個 boolean 聲明 (booleanBadPassword=true/false)。 第二個聲明轉換將booleanBadPassword
與 boolean (false) 進行比較。 在此處使用AssertBooleanClaimIsEqualToValue轉換,如果booleanBadPassword
不等於false
將引發錯誤。
<TechnicalProfile Id="Block-BadPwd-User"> <DisplayName>Block-BadPwd-User</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.ClaimsTransformationProtocolProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <OutputClaims> <OutputClaim ClaimTypeReferenceId="booleanBadPassword" /> </OutputClaims> <OutputClaimsTransformations> <OutputClaimsTransformation ReferenceId="compareObjectIdValue" /> <OutputClaimsTransformation ReferenceId="AssertValueIsFalse" /> </OutputClaimsTransformations> </TechnicalProfile>
<ClaimsTransformation Id="compareObjectIdValue" TransformationMethod="CompareClaimToValue"> <InputClaims> <InputClaim ClaimTypeReferenceId="objectId" TransformationClaimType="inputClaim1" /> </InputClaims> <InputParameters> <InputParameter Id="compareTo" DataType="string" Value="badPassword" /> <InputParameter Id="operator" DataType="string" Value="equal" /> <InputParameter Id="ignoreCase" DataType="string" Value="true" /> </InputParameters> <OutputClaims> <OutputClaim ClaimTypeReferenceId="booleanBadPassword" TransformationClaimType="outputClaim" /> </OutputClaims> </ClaimsTransformation> <ClaimsTransformation Id="AssertValueIsFalse" TransformationMethod="AssertBooleanClaimIsEqualToValue"> <InputClaims> <InputClaim ClaimTypeReferenceId="booleanBadPassword" TransformationClaimType="inputClaim" /> </InputClaims> <InputParameters> <InputParameter Id="valueToCompareTo" DataType="boolean" Value="false" /> </InputParameters> </ClaimsTransformation>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.