Asp.net web api 使用usernamemixed从ADFS请求令牌

Asp.net web api 使用usernamemixed从ADFS请求令牌,asp.net-web-api,Asp.net Web Api,我正在尝试从ADFS服务器从.net web api获取令牌,以进行内部Windows身份验证,同时请求获得以下异常 中发生“System.ServiceModel.Security.MessageSecurityException”类型的异常 mscorlib.dll,但未在用户代码中处理其他信息: 客户端身份验证方案禁止HTTP请求 “匿名”。 获取令牌的代码如下所示 var trustChannelFactory = new WSTrustChannelFactory(new User

我正在尝试从ADFS服务器从.net web api获取令牌,以进行内部Windows身份验证,同时请求获得以下异常

中发生“System.ServiceModel.Security.MessageSecurityException”类型的异常 mscorlib.dll,但未在用户代码中处理其他信息: 客户端身份验证方案禁止HTTP请求 “匿名”。

获取令牌的代码如下所示

  var trustChannelFactory = new WSTrustChannelFactory(new UserNameWSTrustBinding(
                System.ServiceModel.SecurityMode.TransportWithMessageCredential),
                new System.ServiceModel.EndpointAddress(new Uri("https://ADFSSERVER/adfs/services/trust/13/usernamemixed")))
            {
                TrustVersion = TrustVersion.WSTrust13,
                Credentials = { UserName = { UserName = "DCK", Password = "gfgfg" } },               
            };

            var requestSecurityToken = new RequestSecurityToken
            {
                RequestType = RequestTypes.Issue,
                KeyType = KeyTypes.Bearer,
                AppliesTo = new EndpointReference("urn:feedbackapp")   

            };

            RequestSecurityTokenResponse response;
            var securityToken = trustChannelFactory.CreateChannel().Issue(requestSecurityToken, out response);
            return securityToken;
有人能帮我去拿代币吗

var binding = WSTrust13Bindings.UsernameMixed;
var serviceUri = new Uri(_config.StsUri, "/adfs/services/trust/13/usernamemixed");
using (var factory = new WSTrustChannelFactory(binding, serviceUri.AbsoluteUri))
{
    factory.TrustVersion = TrustVersion.WSTrust13;
    factory.Credentials.UserName.UserName = userName;
    factory.Credentials.UserName.Password = password;

    RequestSecurityTokenResponse response;
    var channel = factory.CreateChannel();
    channel.Issue(new RequestSecurityToken()
    {
        RequestType = RequestTypes.Issue,
        AppliesTo = new EndpointReference(_config.ResourceUri.ToString()),
        KeyType = KeyTypes.Bearer
    }, out response);

    var sb = new StringBuilder();
    var ser = new WSTrust13ResponseSerializer();
    using (var sw = new StringWriter(sb, CultureInfo.InvariantCulture))
    {
        var xw = XmlTextWriter.Create(sw, new XmlWriterSettings() { OmitXmlDeclaration = true });
        ser.WriteXml(response, xw, new WSTrustSerializationContext(factory.SecurityTokenHandlerCollectionManager));
        xw.Flush();
    }
    return sb.ToString();
}