如何设置app.UseAuthBeareAuthentication以处理不同的Azure B2C自定义策略?
我读了这篇文章: 在步骤3,app.useAuthBeareAuthentication被调用3次。。。每个保单一份 我只测试了两个策略:SignInPolicyId和SignUpPolicyId 然而,当我这样做时: app.UseAuthBeareAuthenticationCreateBeareOptionsforPolicySignInPolicyId app.UseAuthBeareAuthenticationCreateBeareOptionsforPolicySignupPolicyId; 并将其OnValidateId实体传递给提供者,以处理验证声明等。然后,我尝试按如下策略进行筛选: 专用OAuthBeareAuthenticationOptions CreateBeareOptionsforPolicyString策略 { var metadataEndpoint=string.FormatAadInstance,TenantId,policy; TokenValidationParameters tvps=新的TokenValidationParameters { //这就是您指定API只接受来自其自己客户端的令牌的地方 有效期=客户ID, AuthenticationType=策略, NameClaimType=http://schemas.microsoft.com/identity/claims/objectidentifier, validateisuer=true }; 返回新的OAuthBeareAuthenticationOptions { AccessTokenFormat=new JwtFormattvps,new OpenIdConnectCachingSecurityTokenProvidermetadataEndpoint, Provider=新的OAuthBeareAuthenticationProvider { OnValidateIdentity=异步上下文=> { 尝试 { var policyName=identity.FindFirsthttp://schemas.microsoft.com/claims/authnclassreference?.Value; 如果policyName==B2CSignInPolicyId.ToLower//仅登录策略。。。 { //在此处为刚刚将令牌发送回应用程序的策略运行特定代码。。。 } 问题:正在@Azure B2C执行的策略,即我正在调用的策略是登录策略,但提供程序代码被调用了两次。我注册的每个策略(包括注册策略)都调用了一次 问题:是否有更好的方法来执行此操作,以便执行正确的提供程序?如果正在调用的是登录策略,则只执行登录提供程序,反之亦然 编辑: 我遇到了此处描述的相同问题序列包含多个元素: 这是一个例外: 在System.Linq.Enumerable.SingleOrDefault[TSource]IEnumerable`1处 源\r\n位于 Microsoft.Owin.Security.AuthenticationManager.d\u 20.MoveNext\r\n-- 来自引发异常的上一个位置的堆栈结束跟踪 --\r\n位于System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccessTask 任务\r\n位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotificationTask 任务\r\n位于 System.Web.Http.HostAuthenticationFilter.d\u 4.MoveNext\r\n-- 来自引发异常的上一个位置的堆栈结束跟踪 --\r\n位于System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccessTask 任务\r\n位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotificationTask 任务\r\n位于 System.Web.Http.Controllers.AuthenticationFilterResult.d\u 5.MoveNext\r\n-- 来自引发异常的上一个位置的堆栈结束跟踪 --\r\n位于System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccessTask 任务\r\n位于 System.Runtime.CompilerServices.TaskWaiter.HandleNonSuccessAndDebuggerNotificationTask 任务\r\n位于 System.Web.Http.Controllers.ExceptionFilterResult.d_u6.MoveNext如何设置app.UseAuthBeareAuthentication以处理不同的Azure B2C自定义策略?,azure,owin,azure-ad-b2c,claims,policies,Azure,Owin,Azure Ad B2c,Claims,Policies,我读了这篇文章: 在步骤3,app.useAuthBeareAuthentication被调用3次。。。每个保单一份 我只测试了两个策略:SignInPolicyId和SignUpPolicyId 然而,当我这样做时: app.UseAuthBeareAuthenticationCreateBeareOptionsforPolicySignInPolicyId app.UseAuthBeareAuthenticationCreateBeareOptionsforPolicySignupPolic
不知怎的,我只打了一个电话就成功了: app.UseAuthBeareAuthenticationCreateBeareOptionsforPolicyDefaultPolicyId; 注意,我只传递了一个默认策略,比如说登录策略 对于其他策略,它也会影响OnValidateIdentity委托 关于策略名称,我们需要进一步自定义自定义策略,并按所述返回策略Id声明 另一个@SO有助于理解这一点 通过该设置,在执行策略时,我们可以通过查看TFP Trusted Framework策略声明来获取策略名称,如以下屏幕截图所示: