2013-07-01 4 views
1

Я настроил сервер идентификации Thintecture с идентификационной федерацией (google, facebook, live id) и WCF SOAP-службой.Преобразовать токен SAML в токен JWT с помощью IdentityServer

Теперь мне нужна конечная точка останова WCF (webHttpBinding) для приложения Windows Phone. Я не хочу передавать маркер WSTrust SAML в заголовок авторизации. Можно ли преобразовать SamlToken в токен JWT и как :)?

Ниже приведен код, который я пробовал, но не работает.

var factory = new WSTrustChannelFactory(
    new WindowsWSTrustBinding(SecurityMode.Transport), 
    new EndpointAddress("https://identityserver.local/issue/???")) 
{ 
    TrustVersion = TrustVersion.WSTrust13 
}; 

var rst = new RequestSecurityToken 
{ 
    RequestType = RequestTypes.Issue, 
    KeyType = KeyTypes.Bearer, 
    TokenType = TokenTypes.JsonWebToken, 
    AppliesTo = new EndpointReference("http://my.realm/") 
}; 

var securityToken = xmlToken.ToSecurityToken(); 
var response = factory.CreateChannelWithIssuedToken(securityToken).Issue(rst); 

Спасибо за помощь.

ответ

0

Вы можете настроить IdentityServer для возврата JWT. Перейдите в глобальную конфигурацию и измените тип токена по умолчанию на JWT (то же значение, что и тип токена по умолчанию). Это должно сделать это.

Обновление: Почему вы используете WSTrust вообще - IdSrv не поддерживает аутентификацию, например. google over WS-Trust.

+0

Спасибо, за ответ. Мне нужны два токена ... один SAML для рабочего стола WCF (WPF, Windows Store) и один для клиентов REST (Windows Phone, Android, iOS) или можно использовать JWT в обоих сценариях? Завтра я попробую службу ACS Wrap Service ..., которая преобразует SAML в JWT/SWT. Я не сейчас, это сработает? И, отвечая на ваш вопрос, я использую WS-Federation с (с обнаружением домашнего царства) Google, Live Id и Facebook. Я перехватываю запрос веб-запроса между Identity Sarver и Facebook, например, и получает токен SAML. Когда я получаю токен SAML, я пытался использовать WS-Trust для получения JsonWebToken. – zielu1

+0

Да, это не сработает - вы можете преобразовать его вручную (но для этого требуется ключ подписи) или использовать ACS для его преобразования. Ни один из них не является идеальным решением;) Вы можете расширить IdSrv, чтобы предоставить вам такую ​​услугу, конечно. – leastprivilege

+0

Расширение IdSrv - отличная идея ... это выглядит очень естественным и простым решением. Я попробую этот путь. – zielu1

Смежные вопросы