IdentityServer中的Danamic声明

时间:2015-04-15 01:23:26

标签: thinktecture-ident-server identityserver3

我正在查看AspNetIdentity_2fa示例,并尝试修改它以包含一些用户的动态声明。让我们将它命名为calculated_value声明,该声明是在用户通过身份验证时动态创建的,然后包含在用户的声明列表中并与身份验证令牌一起传递。我知道我可以创建一个单独的Web API来获取此值,但由于它是小数据,并且只要用户通过身份验证就需要它,我想我只是将其作为声明传递。在样本中,我看到声明总是来自静态或硬编码数据。如何创建动态/后期索赔?

谢谢!

1 个答案:

答案 0 :(得分:2)

前段时间我花了一些时间尝试将Identity Server v3与Active Directory集成。我想通过AD验证用户身份并阅读AD中的“声明”。为此,我提供了IUserService的自定义实现。它或多或少基于这些接口的内存实现,即InMemoryUserService

当您的自定义实现准备就绪时,您必须注册它。但是, AspNetIdentity_2fa 示例项目已经注册了IUserService的自定义实现,即UserService(只搜索此类的项目)。它源自实现AspNetIdentityUserService的{​​{1}}。

因此,不要提供全新的实现,而是尝试修改它。我认为您应该查看IUserServiceAuthenticateLocalAsyncAuthenticateExternalAsync方法(请参阅GetProfileDataAsync以供参考)并覆盖它们。前2个用于验证用户,最后一个用于读取用户请求的声明。