问题标签 [identity-experience-framework]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1045 浏览

azure-ad-b2c - 如何使用 B2C 自定义策略对手机进行身份验证

我试图创建一个自定义策略来复制默认密码重置策略的行为。我设置了 MFA,默认策略将要求对手机号码进行身份验证(如果尚未进行身份验证)。

我的自定义密码重置策略不要求验证用户移动设备,我不知道如何更改它以便它这样做。

密码重置.xml

这是所有策略 XML 文件Policy Files的链接

0 投票
3 回答
566 浏览

azure-ad-b2c - 如何在强制更改密码时自定义登录流程重置密码

我使用入门包创建了一个自定义登录流程(仅对我的广告租户进行了更改)。我在 Ad 中创建了一个新用户,使用临时密码,用户在首次登录时必须更改该密码。

当用户第一次登录时,会显示用户名/密码无效的错误,而不是进入密码重置页面。

我需要对自定义登录流程进行哪些更改以显示密码重置页面?

0 投票
1 回答
306 浏览

azure-ad-b2c - 关于文化的问题:RFC5646 和 ContentDefinitions

{Culture:RFC5646} 返回两个不同的英语值。目前,当用户使用 ProfileEdit 或 SignUpSignIn 时,他们会返回不同的值。

例如:

ProfileEdit 返回:en-us
SignUpSignIn 返回:en

我在 ContentDefinitions 的 LoadUri 中使用它,以便我们可以将用户重定向到自定义和翻译的 html 页面。但是,对于两个返回值,我必须维护两个目录“/en”和“/en-us”,而不是一个。

我已验证 ContentDefinition 的 LoadURI 的所有父子策略都使用 {Culture:RFC5646}。

我们已经测试了来自不同位置的多个用户。

我研究了 Azure B2C IEF 本地化文档,它参考了语言是如何确定的,但没有阐明为什么使用相同浏览器的同一个用户会为 {Culture:RFC5646} 返回不同的值

这是 SignUpSignIn 的内容定义加载 Uri

这是配置文件编辑的代码

我想要的是 {Culture:RFC5646} 为同一用户返回相同的值。例如,SignUpSignIn 返回“en-us”,ProfileEdit 返回“en-us”,这样我就可以维护一个目录而不是两个目录。

0 投票
1 回答
143 浏览

azure - ADB2C 身份体验框架:身份验证后的访问令牌使用

由于身份体验框架,我们正在使用大量 ADB2C 内置策略,现在希望启用自定义策略。

我们的一个用例是:在身份验证(注册或登录)之后对端点(受访问令牌保护)进行一些调用(来自策略)。例如:在注册后我们想调用一个用于隐私策略管理的 api。为了让它工作,我们需要有访问令牌。

由于自定义策略,有没有一种方法可以在身份验证后使用刚刚发布的访问令牌调用 http 端点?

0 投票
2 回答
367 浏览

azure-ad-b2c - 无法获取段落 InputType 以在 Azure B2C IEF 中显示任何文本

我在使用 Azure B2C IEF 可用的段落用户输入类型时遇到了一些问题。我想使用段落元素,因为它会使本地化变得容易得多。但是,无论我尝试了什么,我都无法让段落元素显示任何文本。

我已尝试遵循文档:https ://docs.microsoft.com/en-us/azure/active-directory-b2c/claimsschema#paragraph我还通过 GitHub 联系了 B2C 团队并建议我分配默认值.

索赔类型

在我的技术资料中,我分配了一个默认值

我期望该段落显示我分配的文本。相反,在测试期间查看源代码时,我得到的只是一个空白的 < p></p> HTML 标记。

0 投票
0 回答
143 浏览

azure-ad-b2c - 如何使用从内置策略和自定义策略生成的令牌?

我有 ADB2C 内置策略有效。由此,我验证我的最终用户并生成 JWT 令牌以通​​过 APIM 调用 API,并使用 OpenId Connect 进行配置。我现在正在设置自定义策略 (IEF),这要归功于入门工具包,但它似乎无法同时正常工作。

使用内置策略,一切正常。但是当我尝试使用通过 IEF 生成的令牌时,即使所有声明都相同,我也总是收到错误 401“此请求的授权已被拒绝”。

快速查看生成的令牌后,我发现签署令牌的密钥与内置生成的令牌不同。

这肯定是错误的来源。事实上,在设置自定义策略时,我们需要创建“策略密钥”来签署和加密令牌。默认情况下,它是生成的,与内置的不同。但我不知道如何解决这个问题!

请注意,我确实需要为内置策略和自定义策略使用相同的签名和加密密钥,因为在 APIM 中,我只能使用 1 个元数据 URI 进行 OpenId Connect 配置,并在 API 操作验证策略的部分中使用 1 个配置 URL。

另请注意,我没有找到一种方法来检索刷新令牌的当前加密密钥(由内置策略使用)。问题是一样的...

谢谢你的帮助!

这是一个有效的令牌标头,包括签名密钥:

目前,我的策略密钥生成的孩子是“6jQvK3Cr-pdfMP9ozewO3dnmizxxx_toYfjEnxVpJFs”

当我尝试通过查看元数据 URI https://mydomain/tenantId/discovery/v2.0/keys?p=a_ief_policy_name上传相同的密钥时,它已正确上传

但是在收到登录请求的响应时,我收到了错误:AADB2C90085:服务遇到内部错误。请重新验证并重试。

0 投票
0 回答
116 浏览

azure - 如何在 B2C 登录表单中显示 REST API 错误消息

我有多个应用程序使用相同的自定义策略对用户进行身份验证。在 TrustFrameworkExtensions 我定义了两个声明提供程序,一个用于本地帐户,一个用于我公司 AD 租户(社交帐户)的用户,我还有一个声明提供程序用于检索自定义属性并检查用户是否为调用者应用程序启用,这个声明提供程序在用户 jorney 中配置,就像创建 JWT 令牌之前的编排步骤一样。如果启用了用户,API 应用程序将返回带有自定义属性的声明,如果未启用,则返回带有 HttpStatusCode.Conflict 和错误消息的响应。如何在登录表单中显示错误消息,然后再返回调用应用程序?PS:我有一个自定义的 UI 登录表单

更新

我找到了正确的技术配置文件“SelfAsserted-LocalAccountSignin”,现在可以使用了!但我还有两个问题。1.在我的api应用程序中,输入声明中缺少扩展属性,我认为是因为用户尚未登录,是否可以获得所有声明?如果这不可能,我必须使用 Graph by signinName 读取我的 api 中的数据。2. 我的登录表单允许以本地用户身份和我公司 AD 租户(社交帐户)的用户身份进行身份验证。“SelfAsserted-LocalAccountSignin”中的 ValidationTechnicalProfiles 仅适用于本地用户,我尝试为“SM-SocialLogin”技术配置文件配置 ValidationTechnicalProfiles 但不起作用

0 投票
2 回答
603 浏览

azure - Azure AD B2C 自定义策略语言翻译

我在自定义策略中声明了一组支持的语言。但是发生的情况是,即使我没有标记要支持的语言,微软也会隐式地将一些文本和消息转换为其他语言。

(例如)我的应用程序不支持克罗地亚语,所以当我在查询参数中传递克罗地亚语时,它应该指向自定义策略中引用的默认语言,因为克罗地亚语在我不支持的语言列表中。实际上,有些消息会转换为克罗地亚语并显示在 UI 中。

0 投票
2 回答
347 浏览

azure - 刷新访问令牌时调用自定义 REST API

我有一个自定义登录策略,它调用一个自定义 REST API,从我的数据库中获取有关用户的一些信息。

这些信息需要每隔一段时间更新一次,但我有能力每小时更新一次。

问题是,我们没有每小时提示用户登录。相反,我们每小时静默刷新令牌acquireTokenSilent

我需要以某种方式拦截acquireTokenSilent, 以使其调用我的自定义 REST API 并提取其他声明,就像我在自定义登录策略中那样。

有没有办法做到这一点?

0 投票
2 回答
643 浏览

azure - Azure Active Directory B2C 自定义邀请策略 - 在步骤之间传递自定义声明

我已经通过这个示例https://github.com/azure-ad-b2c/samples/tree/master/policies/invite实施了邀请策略(通过向他们发送电子邮件链接来邀请用户访问该站点)

我有这个用户旅程

第一步,我从 JWT 中提取声明。一封电子邮件和一个自定义声明,

(请注意,我1为我的自定义声明设置了默认值)

然后,我有将用户写入目录的技术配置文件

(请注意,在这里我2为我的自定义声明设置了默认值)

AAD-UserWriteUsingLogonEmail-Custom是对内置(内部TrustFrameworkBase.xmlAAD-UserWriteUsingLogonEmail配置文件的修改,我已对其进行了修改以将我的自定义声明包含extension_DBId为持久声明:

问题来了,

我生成了一个任意的 JWT extension_DBId(不是 1,2 或 3)
但是当我使用它运行策略时,在输出声明中,我得到extension_DBId=2

这表明第三个编排步骤 ( LocalAccountSignUpWithReadOnlyEmail) 没有收到extension_DBId来自第一个编排步骤 ( IdTokenHint_ExtractClaims) 的声明。

为什么配置文件不将声明IdTokenHint_ExtractClaims转移extension_DBIdLocalAccountSignUpWithReadOnlyEmail配置文件?

我试图删除第二步(SelfAsserted-Unsolicited),仍然没有工作。

会是什么呢?