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