azure-ad-b2c - 如何在 SAML SSO 响应中添加用户属性
问题描述
我正在使用 Azure AD B2C 作为自定义站点的身份提供程序,该站点还为 Blackboard Learn LMS 站点提供 SSO。Blackboard 可以通过 SAML 进行 SSO,因此我在 B2C 中使用这些功能。不幸的是,SAML 不是我熟悉的协议,因此我的故障排除能力有限。我正在学习以下教程:
一切进展顺利,但我正在尝试映射与 Blackboard 共享的用户属性,以便在创建新用户时,他们至少有一个基本配置文件。本教程中自然会出现一些属性,但我正在尝试为配置文件指定用户名(规范要求它是电子邮件地址),但我没有任何运气。
我OutputClaim
在 SignUpOrSignIn 策略中添加了命名的“userPrincipalName”(参见下面的代码),因为它具有来自 B2C 的适当值,但根据 Blackboard 测试页面,它不在 SAML 响应中发送的值(请参阅下面的屏幕截图)。
...
<RelyingParty>
<DefaultUserJourney ReferenceId="SignUpOrSignIn" />
<TechnicalProfile Id="PolicyProfile">
<DisplayName>PolicyProfile</DisplayName>
<Protocol Name="SAML2"/>
<OutputClaims>
<OutputClaim ClaimTypeReferenceId="displayName" />
<OutputClaim ClaimTypeReferenceId="givenName" />
<OutputClaim ClaimTypeReferenceId="surname" />
<OutputClaim ClaimTypeReferenceId="userPrincipalName" />
<OutputClaim ClaimTypeReferenceId="email" DefaultValue="" />
<OutputClaim ClaimTypeReferenceId="identityProvider" DefaultValue="" />
<OutputClaim ClaimTypeReferenceId="objectId" PartnerClaimType="objectId"/>
</OutputClaims>
<SubjectNamingInfo ClaimType="objectId" ExcludeAsClaim="true"/>
</TechnicalProfile>
</RelyingParty>
...
是否需要采取进一步措施?我也在这里和那里修改了 TrustFrameworkExtensions(和 Base),但无济于事,而且我找不到任何描述的用于向 SAML 响应添加新属性的过程。有没有人有一个例子/教程可以引导我完成它?
(我查看了这个问题,答案表明我可能需要更改 NameIdFormat。我可以看到我的 B2C 应用程序元数据中的格式不正确,但我不确定如何更改它)
更新
根据@JasSuri-MSFT 的建议,我为 UPN 设置了一个(非空)默认值,果然,该默认值通过了。因此,问题似乎在于 UPN 为空。
这很奇怪,因为在 B2C 中用户的编辑页面中,显然有一个 UPN 值。它还突出了我没有提到的另一个奇怪之处。但是OutputClaims
该政策中还列出了其他未包括在内的内容。其中之一email
,我明确提供了一个值,并且它显然也显示为 null。
很明显,管道中还有一个我没有建立的地方。
解决方案
推荐阅读
- c++ - 将 MATLAB 结构返回到 C++ 并访问元素
- javascript - 在导航栏中按下按钮时如何显示模态
- java - 在服务器上托管基于 java 的电报机器人
- java - java.lang.IncompatibleClassChangeError:类 org.springframework.session.hazelcast.PrincipalNameExtractor
- java - Java Money 获取汇率挂起
- windows - Windbg vtop 输出物理地址大于内存
- css - Angular,在 HTMLElement 上应用样式
- docker - 启动 docker 实例的问题
- spring-boot - Firefox 中 Vaadin + Spring Boot 的 LiveReload 不起作用
- github-actions - 在 github 操作中完成多个其他工作流时运行一个工作流