Как получить токен из ACS, используя сертификат клиента? - PullRequest
1 голос
/ 22 марта 2012

Я хочу использовать ACS в качестве STS для служебной шины.Мне удалось использовать ACS для аутентификации для веб-службы.Однако служебной шине требуется токен, и я не знаю, как извлечь ее из ACS?

Короче говоря, я хочу, чтобы мои клиентские wcf-службы могли использовать служебную шину путем аутентификации с помощью сертификатовсоответствует сертификатам, хранящимся в качестве идентификаторов служб в ACS (тот, что соответствует служебной шине -sb).

Кроме того, я использую NetTcpRelayBinding для служебной шины.токен от ACS, если я могу просто получить его с помощью сертификата клиента ...?

1 Ответ

0 голосов
/ 23 марта 2012

Получение токена из ACS с использованием учетных данных сертификата клиента через WCF является хорошо поддерживаемым сценарием.

Существует пример ACS, который делает аутентификацию сертификата клиента WCF здесь , ищите Acs2CertificateBindingSample. Интересно, как создать привязку, которая получает токен от ACS:

    public static Binding CreateServiceBinding(string acsCertificateEndpoint)
    {
        return new IssuedTokenWSTrustBinding(CreateAcsCertificateBinding(), new EndpointAddress(acsCertificateEndpoint));
    }

    public static Binding CreateAcsCertificateBinding()
    {
        return new CertificateWSTrustBinding(SecurityMode.TransportWithMessageCredential);
    }

А как создать фабрику каналов с помощью этой привязки и как указать учетные данные сертификата клиента:

ChannelFactory<IStringService> stringServiceFactory = new ChannelFactory<IStringService>(Bindings.CreateServiceBinding(acsCertificateEndpoint), serviceEndpointAddress);

// Set the service credentials and disable certificate validation to work with sample certificates
stringServiceFactory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
stringServiceFactory.Credentials.ServiceCertificate.DefaultCertificate = GetServiceCertificate();

// Set the client credentials.
stringServiceFactory.Credentials.ClientCertificate.Certificate = GetClientCertificateWithPrivateKey();

В примере не используется служебная шина, это просто простой интерфейс "IStringService", но если вы включите свой NetTcpRelayBinding в состав привязки, те же механизмы должны применяться к вашему сценарию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...