代码之家  ›  专栏  ›  技术社区  ›  user584018

OAuth 2.0-资源所有者密码流,可以使用Windows登录用户凭据

  •  0
  • user584018  · 技术社区  · 6 年前

    我正在使用Identity Server 3,并使用 InMemoryUsers 保留我的用户/密码信息,

    factory.useInMemoryUsers(users.get());
    

    对于我的一个客户,我使用的是resourceownerpassword flow,,

    flow=flows.resourceowner,
    

    现在,我可以通过以下设置获得access tokenby,sending user/pass which we stored in memory,,

    现在的问题是, 我可以使用windows本地用户credential代替内存中的用户吗?

    对于我的一个客户,我正在使用ResourceOwner密码流,

    Flow = Flows.ResourceOwner,
    

    现在,我可以access token通过以下设置,发送存储在内存中的用户/密码,

    enter image description here

    现在的问题是, 我能用吗windows local users凭证代替内存中的用户?

    1 回复  |  直到 6 年前
        1
  •  1
  •   Kahbazi    6 年前

    有个叫服务 IUserService 它负责获取用户及其配置文件。

    当您使用InMemory用户时,实际上您正在使用 InMemoryUserService .

    如果要使用Windows本地用户,则需要实现自己的 用户服务 从Windows获取用户,然后注册您的服务。

    public CustomUserService : UserServiceBase
    {
        public override Task AuthenticateLocalAsync(LocalAuthenticationContext context)
        {
            // You need to implement `GetUserFromWindows` to get users from windows local
            var user = GetUserFromWindows(context.UserName, context.Password);
            if (user != null)
            {
                context.AuthenticateResult = new AuthenticateResult(user.Subject, userDisplayName);
            }
    
            return Task.FromResult(0);
        }
    }
    
    
    factory.UserService = new Registration<IUserService, CustomUserService>();