Пример #1
0
        public ClientAuthenticationResult ClientLogin(ClientAuthenticationRequest request)
        {
            var result = new ClientAuthenticationResult();

            if (string.IsNullOrEmpty(request.Nick) || string.IsNullOrEmpty(request.Password))
            {
                result.Result = ClientAuthenticationResult.AuthResult.InvalidRequest;
                Log.Logger.Warning("CLIENT {AuthResult} {Nick}", result.Result.ToString(), request.Nick);
            }
            else if (!AuthenticationController.ValidatePassword(request.Password))
            {
                result.Result = ClientAuthenticationResult.AuthResult.BadPassword;
                Log.Logger.Warning("CLIENT {AuthResult} {Nick}", result.Result.ToString(), request.Nick);
            }
            else if (ConnectedClients.Contains(request.Nick, StringComparer.OrdinalIgnoreCase))
            {
                result.Result = ClientAuthenticationResult.AuthResult.NickInUse;
                Log.Logger.Warning("CLIENT {AuthResult} {Nick}", result.Result.ToString(), request.Nick);
            }
            else
            {
                result.Result = ClientAuthenticationResult.AuthResult.LoginSuccess;
                result.Token  = AuthenticationController.GenerateAuthenticationToken(request.Nick);

                Log.Logger.Information("CLIENT {AuthResult} {Nick}", result.Result.ToString(), request.Nick);

                AddNewClient(request.Nick);
            }

            return(result);
        }
Пример #2
0
        public static ClientAuthenticationResult ClientLogin(ClientAuthenticationRequest request)
        {
            var result = new ClientAuthenticationResult();

            if (string.IsNullOrEmpty(request.Nick) || string.IsNullOrEmpty(request.Password))
            {
                result.Result = ClientAuthenticationResult.AuthResult.InvalidRequest;
            }
            else if (!AuthenticationController.ValidatePassword(request.Password))
            {
                result.Result = ClientAuthenticationResult.AuthResult.BadPassword;
            }
            else if (_connectedClients.Contains(request.Nick, StringComparer.OrdinalIgnoreCase))
            {
                result.Result = ClientAuthenticationResult.AuthResult.NickInUse;
            }
            else if (AuthenticationController.ValidatePassword(request.Password))
            {
                result.Result = ClientAuthenticationResult.AuthResult.LoginSuccess;
                result.Token  = AuthenticationController.GenerateAuthenticationToken(request.Nick);
                AddNewClient(request.Nick);
            }

            else
            {
                result.Result = ClientAuthenticationResult.AuthResult.UnknownError;
            }

            return(result);
        }
Пример #3
0
        /// <summary>
        /// Attempts to extract client identification/authentication information from a message.
        /// </summary>
        /// <param name="authorizationServerHost">The authorization server host.</param>
        /// <param name="requestMessage">The incoming message.</param>
        /// <param name="clientIdentifier">Receives the client identifier, if one was found.</param>
        /// <returns>The level of the extracted client information.</returns>
        public override ClientAuthenticationResult TryAuthenticateClient(IAuthorizationServerHost authorizationServerHost, AuthenticatedClientRequestBase requestMessage, out string clientIdentifier)
        {
            Requires.NotNull(authorizationServerHost, "authorizationServerHost");
            Requires.NotNull(requestMessage, "requestMessage");

            ClientAuthenticationModule authenticator = null;
            ClientAuthenticationResult result        = ClientAuthenticationResult.NoAuthenticationRecognized;

            clientIdentifier = null;

            foreach (var candidateAuthenticator in this.authenticators)
            {
                string candidateClientIdentifier;
                var    resultCandidate = candidateAuthenticator.TryAuthenticateClient(authorizationServerHost, requestMessage, out candidateClientIdentifier);

                ErrorUtilities.VerifyProtocol(
                    result == ClientAuthenticationResult.NoAuthenticationRecognized || resultCandidate == ClientAuthenticationResult.NoAuthenticationRecognized,
                    "Message rejected because multiple forms of client authentication ({0} and {1}) were detected, which is forbidden by the OAuth 2 Protocol Framework specification.",
                    authenticator,
                    candidateAuthenticator);

                if (resultCandidate != ClientAuthenticationResult.NoAuthenticationRecognized)
                {
                    authenticator    = candidateAuthenticator;
                    result           = resultCandidate;
                    clientIdentifier = candidateClientIdentifier;
                }
            }

            return(result);
        }