Пример #1
0
        private AuthenticationMetadata AuthMetadataFor(string username)
        {
            AuthenticationMetadata authMeta = _authenticationData.get(username);

            if (authMeta == null)
            {
                authMeta = new AuthenticationMetadata(this);
                AuthenticationMetadata preExisting = _authenticationData.putIfAbsent(username, authMeta);
                if (preExisting != null)
                {
                    authMeta = preExisting;
                }
            }

            return(authMeta);
        }
Пример #2
0
        internal SecurityToken GetSecurityTokenInternal()
        {
            TokenServiceMetadata   gatewayMetadata = GetMetadata();
            AuthenticationMetadata dSTSMetadata    = new AuthenticationMetadata(TVSSerializerUtility.Deserialize(gatewayMetadata.Metadata));

            if (cloudServiceName != null && cloudServiceName != gatewayMetadata.ServiceName)
            {
                string warning = string.Format(StringResources.Error_dSTSMismatchInMetadata, "CloudServiceName", cloudServiceName, gatewayMetadata.ServiceName);

                TraceSource.WriteWarning(
                    TraceType,
                    warning);
                throw new FabricException(warning);
            }

            if (cloudServiceDnsNames != null &&
                cloudServiceDnsNames.FirstOrDefault(name => name == gatewayMetadata.ServiceDnsName) == null)
            {
                string warning = string.Format(StringResources.Error_dSTSMismatchInMetadata, "CloudServiceDNSNames", string.Join(",", cloudServiceDnsNames), gatewayMetadata.ServiceDnsName);

                TraceSource.WriteWarning(
                    TraceType,
                    warning);
                throw new FabricException(warning);
            }

            SecurityTokenIssuanceResponse rstr;

            try
            {
                rstr = authenticationClient.GetSecurityToken(
                    gatewayMetadata.ServiceName,
                    gatewayMetadata.ServiceDnsName,
                    dSTSMetadata);
            }
            catch (SecurityTokenIssuanceException e)
            {
                TraceSource.WriteWarning(
                    TraceType,
                    "GetSecurityToken failed with exception: {0}",
                    e.Message);

                throw new FabricException(e.Message);
            }

            return(rstr.SecurityToken);
        }
Пример #3
0
        public override AuthenticationResult Authenticate(User user, sbyte[] password)
        {
            AuthenticationMetadata authMetadata = AuthMetadataFor(user.Name());

            if (!authMetadata.AuthenticationPermitted())
            {
                return(AuthenticationResult.TOO_MANY_ATTEMPTS);
            }

            if (user.Credentials().matchesPassword(password))
            {
                authMetadata.AuthSuccess();
                return(AuthenticationResult.SUCCESS);
            }
            else
            {
                authMetadata.AuthFailed();
                return(AuthenticationResult.FAILURE);
            }
        }