/// <summary>
        /// 生成访问令牌
        /// </summary>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        /// <exception cref="BIStudio.Framework.DefinedException"></exception>
        public SYSAccessToken GeneralTocken(SYSAccessTokenDTO accessToken)
        {
            //检查应用代码和密钥
            var certificate = _certificateRepository.Get(item => item.ApiKey == accessToken.client_id && item.Secret == accessToken.client_secret);

            if (certificate.ID == null)
            {
                throw CFException.Create(STDAccessTokenResult.ClientIDOrSecretInvalid);
            }
            //验证授权码
            var authorize = CacheService.Default.Get <SYSAuthorizeDTO>("STDAuthorizeDTO_" + accessToken.code);

            if (authorize.Equals(default(SYSAuthorizeDTO)))
            {
                throw CFException.Create(STDAccessTokenResult.CodeInvalid);
            }

            if (authorize.redirect_uri != accessToken.redirect_uri)
            {
                throw CFException.Create(STDAccessTokenResult.RedirectUriInvalid);
            }
            //验证用户登录
            if (authorize.uid == null)
            {
                throw CFException.Create(STDAccessTokenResult.UIDInvalid);
            }
            //创建访问令牌
            var token = new SYSAccessToken(certificate.SystemID.Value)     //令牌有效期:2小时
            {
                uid   = authorize.uid.Value,
                scope = authorize.scope,
            };

            return(token);
        }
Example #2
0
        /// <summary>
        /// 生成accesstocken之后操作存储
        /// </summary>
        /// <param name="accessToken">访问令牌</param>
        /// <returns></returns>
        private SYSToken SaveToken(SYSAccessToken accessToken)
        {
            //获得应用账号
            SYSAccount account = _accountRepository.Get(item => item.SystemID == accessToken.system_id && item.PassportID == accessToken.uid);
            //获得应用令牌
            SYSToken token = _tokenRepository.Get(new TokenSpecification(accessToken.system_id, accessToken.uid));

            if (enableConcurrentSessions || token.ID == null)
            {
                token.PassportID   = accessToken.uid;
                token.SystemID     = accessToken.system_id;
                token.AccountID    = account.ID;
                token.UID          = account.UID;
                token.AccessToken  = accessToken.access_token;
                token.RefreshToken = ALUtils.GetGUIDShort();
                token.RequestTime  = DateTime.Now;
                token.RequestIP    = CFContext.User.IP;
                token.Scope        = accessToken.scope;
                token.ExpiresIn    = DateTime.Now.AddSeconds(accessToken.expires_in);
                _tokenRepository.Add(token);
            }
            else
            {
                token.AccessToken = accessToken.access_token;
                token.Scope       = accessToken.scope;
                token.ExpiresIn   = DateTime.Now.AddSeconds(accessToken.expires_in);
                _tokenRepository.Modify(token);
            }
            return(token);
        }
Example #3
0
        public SYSAccessToken GeneralTocken(SYSAccessTokenDTO accessToken)
        {
            //检查应用代码和密钥
            var certificate = _certificateRepository.Get(item => item.ApiKey == accessToken.client_id && item.Secret == accessToken.client_secret);

            if (certificate.ID == null)
            {
                throw CFException.Create(STDAccessTokenResult.ClientIDOrSecretInvalid);
            }
            //创建访问令牌
            var token = new SYSAccessToken(certificate.SystemID.Value);    //令牌有效期:2小时

            return(token);
        }
        /// <summary>
        /// 生成更新令牌
        /// </summary>
        /// <param name="accessToken"></param>
        /// <returns></returns>
        /// <exception cref="BIStudio.Framework.DefinedException"></exception>
        public SYSAccessToken GeneralTocken(SYSAccessTokenDTO accessToken)
        {
            //检查更新令牌
            var refreshToken = _tokenRepository.Get(item => item.RefreshToken == accessToken.refresh_token);

            if (refreshToken.ID == null)
            {
                throw CFException.Create(STDAccessTokenResult.ClientIDOrSecretInvalid);
            }
            //创建访问令牌
            var token = new SYSAccessToken(refreshToken.SystemID.Value)
            {
                uid   = refreshToken.PassportID,
                scope = refreshToken.Scope,
            };

            return(token);
        }