Beispiel #1
0
        /// <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));
        }
Beispiel #2
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));
        }