Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

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

Ответ 3

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

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;
    }

Ответ 4

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

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

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