IdentityServer和旧版SQL Server用户存储

时间:2015-09-11 13:07:50

标签: sql-server identityserver3

几周前,我发现了OpenID Connect和IdentityServer V3。我运行了一些提供的示例,今天我需要更进一步,但我不知道如何继续:

实际上我们有一个"自制的"身份验证和授权过程,我们希望转向OpenID Connect解决方案。 Identity Server似乎是完美的候选者。

今天我们的用户存储在SQL Server数据库中,理想情况下,我希望能够连接"此表到Identity Server(不涉及此表的架构)。我读到了" MembershipReboot"但它使用自己的数据库。我也听说过制作自定义用户服务但是在示例(CustomUserService)中我找不到任何有用的东西。今天我有点失落,因为我不知道去哪里,我意识到我离目标不远。

我需要帮助

谢谢

1 个答案:

答案 0 :(得分:1)

在您提到的Custom User Service Sample中,它包含三种用户服务变体,以显示不同的方法,但您实际上只需要其中一种。

LocalRegistrationUserService示例中,您会找到以下行:

False

和这些:

    public override Task AuthenticateLocalAsync(LocalAuthenticationContext context)
    {
        var user = Users.SingleOrDefault(x => x.Username == context.UserName && x.Password == context.Password);
/// snip ...

您需要将那些从内存中 public override Task GetProfileDataAsync(ProfileDataRequestContext context) { // issue the claims for the user var user = Users.SingleOrDefault(x => x.Subject == context.Subject.GetSubjectId()); /// snip... 集合中查找值的调用替换为打开与SQL Server连接的内容,然后在那里查找它们。

有关支持的更多方法,请参阅Custom User Service documentation,但这两种方法(UsersAuthenticateLocalAsync)以及SQL查找都是您开始使用的所有方法。