Мой контекст:
- .Net RESTful веб-сервис
- Клиент (смешанные платформы, технологии, возможности lib) получил токен SAML
- Попытка принять токен для аутентификации / авторизации в службе REST
- в заголовке HTTP-авторизация / X-авторизация
- в качестве параметра запроса
- Позже также будет поддерживать SWT, но необходимо запустить токены SAML
подробности:
У меня есть токен SAML в строке:
<saml:Assertion xmlns:saml="..." ...> ..etc... </>
В модуле HttpModule я хочу преобразовать это в ClaimsPrincipal, чтобы мой сервис мог выполнять обычный Thread.CurrentPrincipal в качестве материала IClaimsPrincipal.
Я нашел пару привлекательных страниц / блогов / и т. Д., Которые выглядели полезными:
Я буквально застрял, пытаясь превратить токен SAML в принцип ClaimsPrincipal (через промежуточный шаг SecurityToken или через прямой ... в любом случае, довольный). Пример кода из идеи Cibrax использует следующее для решающего этапа проверки и десериализации:
SecurityTokenSerializer securityTokenSerializer
= new SecurityTokenSerializerAdapter(
FederatedAuthentication.SecurityTokenHandlers,
MessageSecurityVersion.Default.SecurityVersion,
false, new SamlSerializer(), null, null);
SecurityToken theToken
= WSFederationAuthenticationModule.GetSecurityToken(
theSamlTokenInStringForm, securityTokenSerializer);
Стена, по которой я столкнулся, состоит в том, что RTM-версия WIF не представляет эту перегрузку GetSecurityToken ... она только предоставляет:
WSFederationAuthenticationModule fam = new WSFederationAuthenticationModule();
SecurityToken theToken = fam.GetSecurityToken(HttpRequest theRequest);
SecurityToken theToken = fam.GetSecurityToken(SignInResponseMessage message);
Спасибо, что помогли мне отклеиться!
Тайлер