/// <summary> /// 授予资源所有者凭据 /// 当客户端请求为 grant_type=password 时触发 /// </summary> /// <param name="arg"></param> /// <returns></returns> private System.Threading.Tasks.Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext arg) { //这里需要验证用户登录信息以及客户端信息 DSCMA user = null; YFPLUS_Client client = null; using (DSCSYSEntities context = new DSCSYSEntities()) { user = new UserService().GetUser(arg.UserName, arg.Password); client = context.YFPLUS_Client.AsNoTracking().FirstOrDefault(s => s.ClientIdentify == arg.ClientId); } if (user != null) { List <Claim> claims = new List <Claim>(); claims.Add(new Claim("ClientID", client.ID + "")); claims.AddRange(arg.Scope.Select(x => new Claim("urn:oauth:scope", x))); claims.Add(new Claim("UserID", user.MA001 + "")); var identity = new ClaimsIdentity( new GenericIdentity(user.MA001, OAuthDefaults.AuthenticationType), claims); arg.Validated(identity); } return(Task.FromResult(0)); }
/// <summary> /// 当客户端请求类型为 "grant_type=client_credentials" 时触发 /// </summary> /// <param name="arg"></param> /// <returns></returns> private System.Threading.Tasks.Task GrantClientCredetails(OAuthGrantClientCredentialsContext arg) { YFPLUS_Client client = null; using (DSCSYSEntities context = new DSCSYSEntities()) { client = context.YFPLUS_Client.AsNoTracking().AsQueryable().SingleOrDefault(s => s.ClientIdentify == arg.ClientId); } var claims = new List <Claim>(); claims.Add(new Claim("ClientID", client.ID + "")); claims.AddRange(arg.Scope.Select(x => new Claim("urn:oauth:scope", x))); var identity = new ClaimsIdentity(new GenericIdentity(client.Name, OAuthDefaults.AuthenticationType), claims); arg.Validated(identity); return(Task.FromResult(0)); }