Все наши проекты проходят проверку подлинности ADFS 2.0 с помощью ws-fed. Я хочу получить доступ к сервису (rest api) с одного сайта на другой API, размещенный на хосте. Я посмотрел на разные ответы, и многие предлагают мне использовать ws-trust. Конечная точка adfs была в основном https://adfs.mycompany.com/adfs/services/trust/13/usernamemixed, тогда как моя https://abc.company.com/adfs/ls. Код сгенерирует исключение в конце с некоторым типом ошибки html. Примечание: я также пробовал использовать Actas с токеном безопасности от bootstrapcontext, он выдал ту же ошибку.
var adfsEndpoint = "https://abc.domain.com/adfs/ls/";
var binding = new UserNameWSTrustBinding(SecurityMode.TransportWithMessageCredential);
var factory = new WSTrustChannelFactory(
binding,new EndpointAddress(adfsEndpoint) )
{
TrustVersion = TrustVersion.WSTrust13
};
factory.Credentials.UserName.UserName = @"username@domain.com"; //this login works in browser
factory.Credentials.UserName.Password = new System.Net.NetworkCredential(string.Empty, "pwd").Password;
var site = "https://site2.com";
var rst = new RequestSecurityToken
{
RequestType = RequestTypes.Issue,
KeyType = KeyTypes.Bearer,
AppliesTo = new EndpointReference(site)
};
IWSTrustChannelContract c1 = factory.CreateChannel();
var token = c1.Issue(rst) as GenericXmlSecurityToken;