Активная и пассивная федерация в WIF - PullRequest
18 голосов
/ 05 мая 2010

Я пытаюсь понять разницу между активной и пассивной федерацией в WIF. Похоже, что можно использовать активную федерацию, если проверяющая сторона (RP) является службой WCF, а не приложением ASP.NET, и пассивная федерация, если RP является приложением ASP.NET. Это точно?

Итак, в сценарии, в котором приложение ASP.NET использует WCF в бэкэнде, в статьях MS предлагается использовать маркер безопасности «начальной загрузки», полученный приложением ASP.NET с использованием STS ActAs, и этот токен используется для аутентификации с WCF. В этом сценарии создается впечатление, что мы делаем комбинацию федерации Active (пользователь -> STS -> ASP.NET RP) и Пассива (ASP.NET -> ActAs STS -> WCF)?

Ответы [ 4 ]

21 голосов
/ 07 мая 2010

Active Federation - это аутентификация пользователя с использованием протоколов WSTrust, а ваша проверяющая сторона владеет окном входа в систему и запрашивает маркер безопасности для STS. Пассивная федерация - это когда у проверяющей стороны нет логики входа, и вы перенаправлены на страницу входа, расположенную на STS. По моему мнению, Active Federation более сложна в настройке (я работаю с silverlight, поэтому для этого нужны некоторые хитрости). Я планирую опубликовать эту тему в своем блоге, потому что в Интернете мало информации об этом.

1 голос
/ 31 мая 2013

Подробнее о пассивных заявках вы можете прочитать здесь:

http://garymcallisteronline.blogspot.co.uk/2012/11/claims-explained.html

Активный вызов - это прямой вызов конечной точки WSActive (они поддерживают множество типов аутентификации). Следующий код показывает активный вызов с использованием активной конечной точки имени пользователя.

    private static GenericXmlSecurityToken GetToken(string username, string password, string url, string audienceUrl)
    {
        var factory = new WSTrustChannelFactory(new Microsoft.IdentityModel.Protocols.WSTrust.Bindings.UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential), new EndpointAddress(url));
        factory.Credentials.UserName.UserName = username;
        factory.Credentials.UserName.Password = password;

        factory.Credentials.ServiceCertificate.Authentication.CertificateValidationMode = X509CertificateValidationMode.None;
        factory.TrustVersion = TrustVersion.WSTrust13;
        WSTrustChannel channel = null;

        var rst = new RequestSecurityToken
        {
            RequestType = WSTrust13Constants.RequestTypes.Issue,
            AppliesTo = new EndpointAddress(audienceUrl),
            KeyType = WSTrust13Constants.KeyTypes.Bearer,
        };
        channel = (WSTrustChannel)factory.CreateChannel();
        return channel.Issue(rst) as GenericXmlSecurityToken;
    }
1 голос
/ 18 марта 2012

Короче говоря, пассивная федерация - это просто фраза, используемая для представления сценария, когда ваш браузер перенаправляется на страницу входа, размещенную на STS. После входа в систему STS перенаправляет вас обратно на URL-адрес ссылки с каким-либо файлом cookie или чем-то еще, и вы проходите аутентификацию на сайте, который доверяет STS (используя отпечатки пальцев, сертификаты, шифрование и т. Д.).

Тебе тоже не обязательно это делать. Мне, например, нравится, чтобы мои сайты ASP.NET активно связывались с STS с использованием учетных данных, предоставленных пользователем, но это означает, что пул приложений ASP.NET должен проходить проверку подлинности на STS с использованием аутентификации Windows для отправки учетных данных, предоставленных пользователем получить токен, а затем я явно добавляю токен в сеанс. Другими словами, я не использовал пассивную федерацию, но это всего лишь выбор.

0 голосов
/ 12 мая 2015

Даже у меня изначально была такая же проблема, но этот блог мне очень помог.

Я бы предложил вам сначала пройти образцов , а затем проанализировать документацию.

Федерация WCF сложна.

...