Активная и пассивная федерация в WIF

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

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


wif
person Nick    schedule 05.05.2010    source источник


Ответы (4)


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

person Daria Barteneva    schedule 07.05.2010
comment
В моем примере Active Federation - это когда проверяющей стороной является служба WCF (поскольку у нее нет страницы входа). Правильно? - person Nick; 07.05.2010
comment
Нет, ваша служба WCF должна иметь какой-то механизм для создания сообщения SOAP и передачи учетных данных в STS, это Active Federation, а ваша служба - Active Requestor (вы можете получать учетные данные любым способом, например, используя окно входа в Silverlight. клиент). Если вы хотите использовать страницу входа от поставщика удостоверений и не беспокоиться о получении и передаче учетных данных, вам следует использовать пассивную федерацию, и в этом случае ваша служба является пассивным запросчиком (он только перенаправляет, а IdP выполняет всю работу). - person Daria Barteneva; 14.05.2010
comment
Вы когда-нибудь писали об этом в блоге? Я безуспешно искал документацию о том, как выполнить активную аутентификацию для приложения MVC :-( - person Roly; 06.05.2013
comment
Почему RP должен запрашивать токен безопасности у STS в Active Federation? Если он может создать окно входа в систему и логику входа, не может ли он также создать утверждения / токен? Как при полном отказе от внешних СС - person Blue Clouds; 15.12.2013
comment
@BlueClouds, который вы хотели бы активировать во многих сценариях, включая мой: у вас есть STS с несколькими настроенными федерациями (то есть вы получаете пользователей, которые входят в систему из нескольких источников, CustomerA, CustomerB, CustomerC, все входят в мое приложение, и я хочу, чтобы мое приложение аутентифицировать пользователей на серверах AD этих клиентов). Итак, они попали в мое приложение, и я хочу, чтобы мое приложение обрабатывало форму входа и запрос токена от моей STS (мой запрос указывает область, в которой они должны пройти аутентификацию). Таким образом, мне не нужно иметь дело с маленьким приложением ADFS Login Pages со страницей обнаружения областей. - person ctb; 26.02.2014
comment
Я пытаюсь аутентифицировать пользователя из клиентского приложения, которое обменивается данными со службой wcf. служба wcf отвечает за аутентификацию по своей собственной базе данных членства, Active Directory и adfs. В моем случае должна быть активная федерация. Как вы подойдете к этой проблеме? - person TrustyCoder; 21.10.2015

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

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

person Sentinel    schedule 17.03.2012

Вы можете узнать больше о пассивных претензиях здесь:

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;
    }
person GaryMcAllister    schedule 31.05.2013
comment
Кто-нибудь знает, как сделать эквивалент в .NET 4.5? Похоже, многое изменилось, в частности, UserNameWSTrustBinding больше не существует ...? - person ctb; 26.02.2014

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

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

Однако федерация WCF - дело непростое.

person Suhas TJ    schedule 12.05.2015