Создать новый токен безопасности ADFS 2.0 «adfs / ls», а не «usernamemixed» - PullRequest
0 голосов
/ 23 апреля 2020

Все наши проекты проходят проверку подлинности 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;
...