我们有SPA,IdSvr3和第三方IdP(AAD B2C)。
用户成功进行身份验证。当用户单击SPA中的编辑配置文件链接时,将使用authorization_endpoint将它们定向到IdSvr。我传入一个名为" profile的acr_value。"
我认为这与这位绅士同样存在问题 - https://github.com/IdentityServer/IdentityServer3/issues/2816#issuecomment-217161898
我尝试了一些事情:
- 已实现ICustomRequestValidator.ValidateAuthorizeRequestAsync.-在此方法中,我检索acr_values。这似乎不是一个指导用户从这里开始的好方法。 ValidatedAuthorizeRequest上有RedirectUrl,用于重定向用户,但该对象的所有信息都是从客户端请求到IdSvr,与IdP无关。
- 也许ValidatedRequest上有一个设置可以调整以强制IdSvr指向身份提供者(在这种情况下,IdP是 - Microsoft.Owin.Security.OpenIdConnect.OpenIdConnectAuthentication)
- 实施了UserService。如果用户已登录,则事件会触发IsActiveAsync和GetProfileDataAsync。在IsActiveAsync中,我可以从HTTP上下文中获取acr值,并将IsActive设置为false,从而强制IdSvr返回到IdP。我无法从OpenIdConnectAuthenticationNotifications.RedirectToIdentityProvider访问上下文,因此我还没有找到一种方法来访问那里的acr值。有没有办法将某些内容传递到此处以检查这是否应该是一个编辑配置文件?
- 与UserService类似,我实现了IsAuthenticationSessionValidAsync以使会话无效并强制idsvr指向Idp。这与无法访问acr值的问题相同。
- PartialLogin似乎不是正确的策略,因为它似乎只是从尚未经过身份验证的用户触发。也许如果我们强制用户注销,这可以用来引导他们到IdP? https://identityserver.github.io/Documentation/docsv2/advanced/userService.html
醇>
记录用户感觉就像开始时的错误方法一样,但似乎可以让它起作用。
是否存在拦截请求并根据请求中的内容将其指向IdP的标准方法?