自定义策略中如何为Google等社交IDP添加ValidationTechnicalProfile验证
解决社交账号登录时的用户声明校验问题
问题背景
- 本地账号登录场景下,通过
SelfAsserted-LocalAccountSignin-Email的ValidationTechnicalProfiles调用自定义REST API校验用户声明,功能正常。 - 社交账号(如Google)登录时,尝试在
SelfAsserted-Social中添加同款验证,但因无需收集用户额外信息,该编排步骤被跳过,验证逻辑不执行。 - 尝试在
Google-OAuth技术配置文件中添加验证不被支持,仅自断言技术配置文件允许配置ValidationTechnicalProfiles。
当前SelfAsserted-Social配置:
<TechnicalProfile Id="SelfAsserted-Social"> <ValidationTechnicalProfiles> <ValidationTechnicalProfile ReferenceId="REST-CheckInactiveEmployee" /> </ValidationTechnicalProfiles> </TechnicalProfile>
解决方案:通过编排步骤插入REST校验
无需依赖自断言技术配置文件的验证逻辑,直接在社交登录的编排流程中添加独立步骤调用REST API:
定位社交登录的用户旅程
在自定义策略的<UserJourneys>节点中,找到对应社交登录的用户旅程(如SignUpOrSignIn),定位到社交IDP回调后的编排步骤。插入REST调用编排步骤
在社交IDP返回用户声明之后、创建/更新本地用户或签发令牌之前,添加调用REST API的步骤:
<OrchestrationStep Order="X" Type="ClaimsExchange"> <ClaimsExchanges> <ClaimsExchange Id="CheckInactiveEmployee" TechnicalProfileReferenceId="REST-CheckInactiveEmployee" /> </ClaimsExchanges> </OrchestrationStep>
- 调整
Order="X"为合适的顺序,例如在获取IDP声明的步骤(通常为Order="2")之后,在执行用户创建/更新(如AAD-UserWriteUsingAlternativeSecurityId)的步骤之前。
- 配置REST技术配置文件适配无输入场景
确保REST-CheckInactiveEmployee直接使用社交登录后已获取的声明(如邮箱、用户ID)进行校验,无需用户输入:
<TechnicalProfile Id="REST-CheckInactiveEmployee"> <DisplayName>校验用户是否失效</DisplayName> <Protocol Name="Proprietary" Handler="Web.TPEngine.Providers.RestfulProvider, Web.TPEngine, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null" /> <Metadata> <Item Key="ServiceUrl">https://你的API地址/check-inactive-status</Item> <Item Key="AuthenticationType">None</Item> <Item Key="SendClaimsIn">Body</Item> <Item Key="ErrorMessage">该账号已失效,请联系管理员。</Item> </Metadata> <InputClaims> <InputClaim ClaimTypeReferenceId="email" PartnerClaimType="userEmail" /> </InputClaims> <UseTechnicalProfileForSessionManagement ReferenceId="SM-Noop" /> </TechnicalProfile>
- 处理校验失败逻辑
当REST API校验不通过时,返回HTTP 400状态码,自定义策略会自动终止登录流程并显示配置的错误信息。
关键说明
- 编排步骤的顺序决定了校验时机:必须在社交IDP返回用户声明后执行,确保能获取到校验所需的用户数据。
- 脱离自断言技术配置文件的依赖,通过独立编排步骤触发校验,避免因自断言步骤被跳过导致验证逻辑不执行。
内容的提问来源于stack exchange,提问作者Andrew Wiebe
相关产品推荐
相关产品推荐

