2013-09-25 3 views
3

Я пытаюсь получить токен из ADFS, чтобы использовать его с локальной установкой Windows Service Bus. Возможно, я неправильно настроил ADFS, потому что получаю следующее сообщение:Получить токен из ADFS

MSIS3127: указанный запрос не выполнен.

код для доступа маркер выглядит следующим образом:

string adrecaSTS = "trust/13/usernamemixed"; 

    WS2007HttpBinding binding = new WS2007HttpBinding(); 

    binding.Security.Message.EstablishSecurityContext = false; 
    binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.None; 
    binding.Security.Message.ClientCredentialType = MessageCredentialType.UserName; 
    binding.Security.Mode = SecurityMode.TransportWithMessageCredential; //https 

    string baseSSLUri = @"https://<myadfs>/adfs/services/"; 



    WSTrustChannelFactory trustChannelFactory = new WSTrustChannelFactory(binding, new EndpointAddress(baseSSLUri + adrecaSTS)); 
    trustChannelFactory.TrustVersion = TrustVersion.WSTrust13; 
    trustChannelFactory.Credentials.UserName.UserName = "username"; 
    trustChannelFactory.Credentials.UserName.Password = "password"; 

    WSTrustChannel tokenClient = (WSTrustChannel)trustChannelFactory.CreateChannel(); 

    //create a token issuance issuance 
    RequestSecurityToken rst = new RequestSecurityToken(RequestTypes.Issue); 

    //call ADFS STS 
    SecurityToken token = tokenClient.Issue(rst); 

Конечная точка включена ADFS и мой клиент (ноутбук на отдельном домене) доверяет сертификат от ADFS.

Нужно ли мне настраивать какое-то доверие или что-то еще? Это сообщение об ошибке не особенно полезно.

ответ

1

Смотрите здесь:

https://github.com/thinktecture/Thinktecture.IdentityServer.v2/blob/master/src/Libraries/Thinktecture.IdentityServer.Protocols/WSFederation/HrdController.cs

Метод ValidateToken имеет большую часть кода - но сначала надо извлечь InnerXml из общего токена и превратить его в токен безопасности SAML (снова используя обработчик токена).

0

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

мне также пришлось изменить RequestSecurityToken иметь KeyType из KeyType.Symmetric

+0

И вы также должны указать AppliesTo. – leastprivilege

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