gpt4 book ai didi

azure - 为什么自定义 Azure B2C 策略 SignUpInvitation.xml 会引发 `Object reference not set to an instance of an object` 错误?

转载 作者:行者123 更新时间:2023-12-03 02:41:53 30 4
gpt4 key购买 nike

我正在尝试从以下 URL 的存储库中获取示例项目,使其正常工作。

https://github.com/azure-ad-b2c/samples/tree/master/policies/invite

示例项目包括自定义 B2C 策略、SignUpInvitation.xml 和一个 Web 项目。我的基本理解是,所包含的自定义策略本质上需要签名 token 才能访问该策略。该示例基本上使用此作为“邀请”步骤来限制对注册策略的访问。这就是我所追求的,所以我相信这个样本为我指明了正确的方向。我现在只是想让它发挥作用。

我的问题是,在配置了我认为是所有必需的设置后,我认为 B2C 策略中出现了错误。因此,我将首先介绍如何产生错误的步骤。

产生错误

我运行提供的网络项目并输入我的电子邮件,然后单击邀请。我收到邀请电子邮件,其中包含自定义 B2C 政策 - SignUpInvitation.xml 的链接。我单击该链接并转到该策略,但看到一个页面,显示发生了异常:

AADB2C: An exception has occurred

由于找不到任何其他调试信息,我们将 Application Insights 配置添加到自定义策略中,以便将输出记录到 App Insights。现在,在人工智能中,我可以看到该策略正在产生以下错误......

  {
""Kind"": ""Action"",
""Content"": ""Web.TPEngine.StateMachineHandlers.GetRelyingPartyInputClaimsHandler""
},
{
""Kind"": ""FatalException"",
""Content"": {
""Time"": ""7:05 PM"",
""Exception"": {
""Kind"": ""Handled"",
""HResult"": ""80004003"",
""Message"": ""Object reference not set to an instance of an object."",
""Data"": {}
}
}
}

所以,有一个明显的错误,但消息仍然有点模糊。这就是我被困住的地方。我不确定如何进一步调试并查明导致引用错误的原因。

我调查过的事情

通过调试过程,我基本上查看了我能找到的与此相关的所有信息。我只是不太熟悉 B2C 策略 XML 脚本,这似乎是一个非常深入和技术性的主题。这是我有兴趣学习的一个主题,但只需要一些关于如何调试脚本等方面的帮助。

我注意到的一件事是,上述错误中的 Action 提到它正在获取输入声明。因此,在我看来,在获取 claim 方面,政策或我的配置可能存在问题。因此,我在 App Insights 中查找上述消息的“堆栈跟踪”,发现以下操作和结果...

  {
""Kind"": ""Predicate"",
""Content"": ""Web.TPEngine.StateMachineHandlers.InitiatingMessageValidationHandler""
},
{
""Kind"": ""HandlerResult"",
""Content"": {
""Result"": false,
""RecorderRecord"": {
""Values"": [
{
""Key"": ""Validation"",
""Value"": {
""Values"": [
{
""Key"": ""SubmittedBy"",
""Value"": ""Application""
},
{
""Key"": ""ProtocolProviderType"",
""Value"": ""OpenIdConnectProtocolProvider""
}
]
}
}
]
},
""Statebag"": {
""MSG(e4c7c6a9-8023-4cf7-9a34-c920e8325284)"": {
""c"": ""2020-03-20T19:05:48.1325292Z"",
""k"": ""MSG(e4c7c6a9-8023-4cf7-9a34-c920e8325284)"",
""v"": ""{\""TenantId\"":\""wibradixdev.onmicrosoft.com\"",\""PolicyId\"":\""B2C_1A_signup_invitation\"",\""RedirectUri\"":\""https://jwt.ms/\"",\""AdditionalParameters\"":{\""TEST\"":\""TEST\"",\""p\"":\""B2C_1A_signup_invitation\""},\""Nonce\"":\""0eefd73e94224dc69d8766dd219180e6\"",\""ClientId\"":\""30639331-3c2c-4ade-8c36-814dfe007170\"",\""ResponseType\"":\""id_token\"",\""ResponseRedirector\"":{\""URI\"":\""https://jwt.ms\"",\""D\"":false,\""WF\"":true},\""Scope\"":\""openid\"",\""AppModelVersion\"":1,\""ScopedProviders\"":[]}"",
""p"": true,
""t"": ""OAuth2""
},
""CMESSAGE"": {
""c"": ""2020-03-20T19:05:48.1325292Z"",
""k"": ""CMESSAGE"",
""v"": ""e4c7c6a9-8023-4cf7-9a34-c920e8325284"",
""p"": true
},
""IMESSAGE"": {
""c"": ""2020-03-20T19:05:48.1325292Z"",
""k"": ""IMESSAGE"",
""v"": ""e4c7c6a9-8023-4cf7-9a34-c920e8325284"",
""p"": true
},
""ComplexItems"": ""_MachineEventQ, TCTX, ORCH_IDX, REPRM, IC""
},
""PredicateResult"": ""True""
}
}

这个操作似乎是在进行某种类型的验证,但我注意到结果返回false,这通常意味着某种失败?在这种情况下我不确定。

我该如何继续?

为什么这个策略会抛出异常?

我将示例 Web 项目部署到 Azure,您可以访问该项目 here如果你想看看我所看到的。

此外,here is a link to the full error text ,来自应用程序洞察。这是从我的 Github 问题中链接到的相同相关问题。

编辑

这是所请求的技术简介部分...

    <ClaimsProvider>
<DisplayName>My ID Token Hint ClaimsProvider</DisplayName>
<TechnicalProfiles>
<TechnicalProfile Id="IdTokenHint_ExtractClaims">
<DisplayName> My ID Token Hint TechnicalProfile</DisplayName>
<Protocol Name="None" />
<Metadata>

<!--Sample action required: replace with your endpoint location -->
<Item Key="METADATA">https://wibradixdev.b2clogin.com/wibradixdev.onmicrosoft.com/v2.0/.well-known/openid-configuration?p=B2C_1A_signup_invitation</Item>



<!-- <Item Key="IdTokenAudience">your_optional_audience_override</Item> -->
<!-- <Item Key="issuer">your_optional_token_issuer_override</Item> -->
</Metadata>
<OutputClaims>
<!--Sample: Read the email cliam from the id_token_hint-->
<OutputClaim ClaimTypeReferenceId="email" />
</OutputClaims>
</TechnicalProfile>
</TechnicalProfiles>
</ClaimsProvider>
</ClaimsProviders>

最佳答案

我的问题的解决方案是,在提供的示例的自定义 B2C 政策中,技术配置文件的 METADATA 字段设置不正确。我将其设置为我们的 B2C 策略的众所周知的 URL,但它需要设置为我们的 id 提示服务的众所周知的 URL,该服务位于示例代码的提供的 ASP 项目中。将其设置为正确的 URL 后,注册工作流程将按预期运行。

关于azure - 为什么自定义 Azure B2C 策略 SignUpInvitation.xml 会引发 `Object reference not set to an instance of an object` 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60835115/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com