コード例 #1
0
 protected virtual void EnsureClientExists(TokenRequestMessage message)
 {
     var clientId = message.Parameters[OAuthConstants.ClientId];
     if (!this.ClientStore.ClientExists(clientId))
     {
         throw new OAuthException(OAuthErrorCodes.InvalidClient, string.Format("The client_id '{0}' is not registered", clientId));
     }
 }
コード例 #2
0
        public override bool CanValidateMessage(TokenRequestMessage message)
        {
            if (message.Type == RequestGrantType.None)
            {
                return true;
            }

            return false;
        }
コード例 #3
0
 public TokenResponseMessage CreateResponse(TokenRequestMessage message, NameValueCollection additionalInfo)
 {
     TokenResponseMessage response = new TokenResponseMessage();
     response.AccessToken = this.CreateAccessToken(message, additionalInfo);
     response.RefreshToken = this.CreateRefreshToken();
     response.AccessTokenExpiresIn = TimeSpan.FromSeconds(this.serviceConfig.SimpleWebTokenHandlerConfiguration.Issuer.TokenExpirationInSeconds);
     
     return response;
 }
コード例 #4
0
        public override NameValueCollection Validate(TokenRequestMessage message)
        {
            string clientId = message.Parameters[OAuthConstants.ClientId];
            string clientSecret = message.Parameters[OAuthConstants.ClientSecret];

            if (string.IsNullOrEmpty(clientId) || string.IsNullOrEmpty(clientSecret))
            {
                throw new InvalidOperationException("client_id and client_secret must be present for this profile");
            }

            bool valid = this.ClientStore.ValidateClient(clientId, clientSecret);
            if (!valid)
            {
                throw new InvalidOperationException("client_id is not registered or client_secret is invalid");
            }

            message.Parameters.Remove(OAuthConstants.ClientSecret);
            
            return message.Parameters;
        }
コード例 #5
0
        public virtual TokenRequestMessage ReadMessage(StreamReader reader)
        {
            NameValueCollection requestParameters;
            string requestString;
            requestString = reader.ReadToEnd();
            reader.Close();            
            requestParameters = HttpUtility.ParseQueryString(requestString);

            var message = new TokenRequestMessage();
            foreach (string key in requestParameters.AllKeys)
            {
                if (key == OAuthConstants.GrantType)
                {
                    message.Type = requestParameters[key];
                    requestParameters.Remove(key);
                }

                message.Parameters = requestParameters;
            }

            return message;
        }
コード例 #6
0
        private string CreateAccessToken(TokenRequestMessage message, NameValueCollection additionalInfo)
        {
            var scope = message.Parameters["scope"];
            var validity = TimeSpan.FromSeconds(this.serviceConfig.SimpleWebTokenHandlerConfiguration.Issuer.TokenExpirationInSeconds);
            var swt = CreateSimpleWebToken(this.serviceConfig.SimpleWebTokenHandlerConfiguration.Issuer.IssuerIdentifier, scope, validity, additionalInfo);
            var accessToken = SerializeToken(swt, this.serviceConfig.SecurityTokenHandlers);

            return accessToken;
        }
コード例 #7
0
 public abstract NameValueCollection Validate(TokenRequestMessage message);
コード例 #8
0
 public virtual bool CanValidateMessage(TokenRequestMessage message)
 {
     return false;
 }