Я использую образцы Thinktecture.IdentityModel 4.0 для WebApiSecurity. Я изменил AdfsSamlClient для использования нашего сервера ADFS. Я могу получить токен SAML с сервера ADFS, используя
var channel = factory.CreateChannel();
var token = channel.Issue(rst) as GenericXmlSecurityToken;
Затем я пытаюсь позвонить в службу
var client = new HttpClient { BaseAddress = _baseAddress };
client.DefaultRequestHeaders.Authorization =
new AuthenticationHeaderValue("AdfsSaml", saml);
var response = client.GetAsync("identity").Result;
И получите 401 — звонок не авторизован.
Я не уверен, как это отладить. У меня есть трассировка для Microsoft.IdentityModel, но это только трассировка на уровне информации, без ошибок или предупреждений, и я ничего не могу использовать для отладки.
Интересная часть служебной трассировки:
1. Description OnEndRequest is redirection to IdentityProvider '/WebHost/api/identity' 2. Description CreateSignInRequest BaseUri https://[ADFS...]/adfs/ls/ wa wsignin1.0 wtrealm https://[WorkStation...]/WebHost/ wctx rm=0&id=passive&ru=%2fWebHost%2fapi%2fidentity 3. Description Redirecting to IdentityProvider: 'https://[ADFS...]/adfs/ls/?wa=wsignin1.0&wtrealm=https%3a%2f%2f[WorkStation...]%2fWebHost%2f&wctx=rm%3d0%26id%3dpassive%26ru%3d%252fWebHost%252fapi%252fidentity&wct=2013-09-30T17%3a35%3a04Z'
Спасибо за любое понимание.