Делегирование удостоверений с помощью WIF 4.5 между веб-уровнем и уровнем wcf с пользовательскими утверждениями, добавленными с помощью ClaimsAuthenticationManager

Я пытаюсь реализовать делегирование утверждений с веб-слоя на уровень WCF.

Это отлично работает с использованием токена ActAs, полученного из ClaimsIdentity BootstrapContext.

Все утверждения, полученные на веб-уровне от ACS, правильно передаются на уровень WCF.

Это настроено аналогично тому, как описано здесь:

http://msdn.microsoft.com/en-us/library/ee517269.aspx (но я считаю, что этот конкретный пример связан с WIF 4.)

Однако мне также необходимо обогатить полученные претензии, чтобы добавить наши собственные внутренние претензии. Я делаю это с помощью ClaimsAuthenticationManager.

Это достигается аналогично описанному здесь: http://msdn.microsoft.com/en-us/library/system.security.claims.claimsauthenticationmanager.aspx

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

Однако они не передаются в качестве токена, полученного из ClaimsIdentity.BootstrapContext.

Я понимаю, что причина этого в том, что BootstrapContext содержит исходные утверждения, которые были получены, и, следовательно, не содержит дополнительных внутренних утверждений, которые я добавил.

Мне нужен какой-то способ, чтобы также передать эти внутренне добавленные утверждения на уровень WCF в токене actas.

Есть ли способ заставить BootstrapContext также содержать утверждения, которые я добавляю, или есть способ создать SecurityToken из Current ClaimsIdentity/Principle, который я могу использовать в качестве токена (поскольку он будет содержать дополнительный претензии).


person Kramer00    schedule 15.10.2013    source источник


Ответы (1)


Вы можете использовать ту же технику на уровне WCF — использовать ClaimsAuthenticationManager для преобразования утверждений.

person Brock Allen    schedule 15.10.2013
comment
Я думал об этом, но мне показалось немного дублированием того, что мне пришлось делать это в обоих слоях, когда я думал, что идея делегирования/actas заключается в том, чтобы пропустить все (скорее нужно сделать другое преобразование). Поэтому я идеально искал способ сделать это. - person Kramer00; 16.10.2013
comment
Наконец-то я получил еще одно подтверждение того, что правильная техника заключается в том, чтобы сделать то же преобразование и в слое wcf. В ответе Microsoft ADM сделан вывод о том, что такое поведение является преднамеренным, поскольку токены подписываются STS, и добавление к нему утверждений нарушит подпись и поставит под угрозу всю модель безопасности. - person Kramer00; 18.10.2013