ID4 ADFS 3.0和oidc客户端(vue-spa)-回调实现



要在SPA中添加ADFS 3.0身份验证,我们使用javascript示例和一个(wsfed(外部身份提供程序,还为SPA客户端添加了一个本地api

我们还在登录过程中添加了一个自定义视图,用户可以在其中"选择工作上下文",我们可以设置一个额外的声明。

问题:如何添加和检索该附加索赔

由于我们只需要ws-federation的一些声明,我们制作了一个超级简单的callback,其中我们只需执行以下操作(我正在回答文档中的问题(

在用户中处理回调和签名

  1. 检查外部提供程序返回的标识。
    • 是的,我们从wsfed得到了正确的索赔
  2. 决定如何与该用户打交道。如果这是一个新用户或返回的用户,则根据实际情况可能会有所不同。新用户可能需要额外的步骤和UI才能被允许在里面
    • 无需其他步骤
  3. 可能会创建一个链接到外部提供者的新内部用户帐户。
    • 不,我们不需要用户,我们只需要来自wsfed的一些声明,所以我们只返回一个基于FindUserFromExternalProvider中的wsfed子的TestUser
  4. 存储要保留的外部声明。
    • 我们是否需要存储声明,声明是否不会嵌入jwt令牌中,并且令牌只是经过验证
  5. 删除临时cookie
  6. 登录用户
    • 这里我们想展示一个自定义ui,用户应该在其中选择一个"workingcontext",我们可以添加"workingcontext"作为额外的声明

假设上述内容有效,我们如何在步骤6中添加额外的索赔?

await _events.RaiseAsync(new UserLoginSuccessEvent(provider, providerUserId, user.SubjectId, user.Username, true, context?.ClientId)); 似乎没有给出任何添加声明的方法。

这就是我们试图通过登录过程传递额外索赔的方式:

var isuser = new IdentityServerUser(user.SubjectId)
{
DisplayName = user.Username,
IdentityProvider = provider,
AdditionalClaims = additionalLocalClaims
};

await HttpContext.SignInAsync(isuser, localSignInProps);

我们只需要实现IProfileService,仅此而已。

最新更新