IdentityServer 和遗留 SQL 服务器用户存储
IdentityServer and legacy SQL Server user store
几周前我发现了 OpenID Connect 和 IdentityServer V3。我 运行 提供了一些示例,今天我需要更进一步,但我不知道如何继续:
实际上我们有一个 "home made" 身份验证和授权过程,我们想转向 OpenID Connect 解决方案。 Identity Server 似乎是执行此操作的最佳人选。
今天我们的用户存储在 SQL 服务器数据库中,理想情况下我想 "connect" 这个 table 到身份服务器(不触及这个 table).我读到 "MembershipReboot" 但它使用自己的数据库。我还听说过制作自定义用户服务,但在示例 (CustomUserService) 中我没有发现任何有用的信息。今天我有点迷茫,因为我不知道该去哪里,我发现我离目标不远了。
我需要帮助
谢谢
在您提到的 Custom User Service Sample 中,它包括三种用户服务变体以显示不同的方法,但您实际上只需要其中一种。
在 LocalRegistrationUserService 示例中,您会发现如下行:
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...
您需要将那些从内存中 Users
集合中查找值的调用替换为打开与 SQL 服务器的连接并在那里查找值的调用。
请参阅 Custom User Service documentation 了解更多受支持的方法,但这两个 (AuthenticateLocalAsync
、GetProfileDataAsync
) 加上您的 SQL 查找是您开始所需的全部内容。
几周前我发现了 OpenID Connect 和 IdentityServer V3。我 运行 提供了一些示例,今天我需要更进一步,但我不知道如何继续:
实际上我们有一个 "home made" 身份验证和授权过程,我们想转向 OpenID Connect 解决方案。 Identity Server 似乎是执行此操作的最佳人选。
今天我们的用户存储在 SQL 服务器数据库中,理想情况下我想 "connect" 这个 table 到身份服务器(不触及这个 table).我读到 "MembershipReboot" 但它使用自己的数据库。我还听说过制作自定义用户服务,但在示例 (CustomUserService) 中我没有发现任何有用的信息。今天我有点迷茫,因为我不知道该去哪里,我发现我离目标不远了。
我需要帮助
谢谢
在您提到的 Custom User Service Sample 中,它包括三种用户服务变体以显示不同的方法,但您实际上只需要其中一种。
在 LocalRegistrationUserService 示例中,您会发现如下行:
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...
您需要将那些从内存中 Users
集合中查找值的调用替换为打开与 SQL 服务器的连接并在那里查找值的调用。
请参阅 Custom User Service documentation 了解更多受支持的方法,但这两个 (AuthenticateLocalAsync
、GetProfileDataAsync
) 加上您的 SQL 查找是您开始所需的全部内容。