Мой веб-сайт реализует аутентификацию на основе AD FS. Теперь мне нужно программно получить доступ к моему веб-сайту через клиента. Мой клиент должен запросить маркер безопасности с сервера ADFS, используя текущий пользовательский контекст. Я успешно смог запросить маркер безопасности с конечной точки adfs/services/trust/13/usernamemixed
, используя имя пользователя и пароль от клиента и разместил его на моем веб-сайте.RequestSecurityToken от STS и опубликовать его на моем сайте
То, что не работает для меня, запрашивает один и тот же токен с конечной точки adfs/services/trust/13/windowsmixed
, используя DefaultNetworkCredentials
. Я получаю ошибку The HTTP request was forbidden with client authentication scheme 'Anonymous'.
. Я использую Microsoft.IdentityModel
SDK (вместо System.IdentityModel
в .NET 4.5).
Вот фрагмент моего кода.
factory = new MSWSTrustChannelFactory(
new Microsoft.IdentityModel.Protocols.WSTrust.Bindings.WindowsWSTrustBinding(SecurityMode.TransportWithMessageCredential),
stsUrl);
factory.TrustVersion = TrustVersion.WSTrust13;
factory.Credentials.Windows.ClientCredential = CredentialCache.DefaultNetworkCredentials;
var rst = new RequestSecurityToken
{
RequestType = RequestTypes.Issue,
AppliesTo = new EndpointAddress(realm),
KeyType = KeyTypes.Bearer,
RequestDisplayToken = true
};
MSIWSTrustChannelContract channel = factory.CreateChannel();
RequestSecurityTokenResponse rstr;
SecurityToken token = channel.Issue(rst, out rstr);
У меня нет никакого контроля на сервере ADFS и вы не можете отлаживать, что там происходит. Что бы я ни делал, это только с конца клиента. Любая идея, что происходит с моим кодом выше? Любую помощь или указатели приветствуем.