请问在ASP.NET Core / Kestrel中是否可以使用摘要认证?如果可以,如何启用和使用它?
我知道基本认证不会被实现,因为它被认为是不安全和缓慢的,但我完全找不到摘要认证相关的信息。
我不想使用IIS的认证,因为我不想受限于Windows账户,我想使用自定义凭据验证逻辑。
请问在ASP.NET Core / Kestrel中是否可以使用摘要认证?如果可以,如何启用和使用它?
我知道基本认证不会被实现,因为它被认为是不安全和缓慢的,但我完全找不到摘要认证相关的信息。
我不想使用IIS的认证,因为我不想受限于Windows账户,我想使用自定义凭据验证逻辑。
目前Core唯一可用的摘要身份验证实现是与集成Windows身份验证相关联的IIS。
如果有人正在寻找答案。 这段代码对我有效:
using System.ServiceModel;
var binding = new BasicHttpBinding();
binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Digest;
binding.TextEncoding = Encoding.UTF8;
binding.TransferMode = TransferMode.Buffered;
binding.AllowCookies = false;
binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
var endpoint = new EndpointAddress(new Uri("http://website.domain/WebService.svc"));
var client = new MessageServiceClient(binding, endpoint);
client.ClientCredentials.HttpDigest.ClientCredential.UserName = "username";
client.ClientCredentials.HttpDigest.ClientCredential.Password = "password";
var response = client.CallMethod();
关于Kestrel、WebListener服务器和身份验证的几点说明
以下是如何使用WebListener允许匿名用户的示例:
builder.UseWebListener(options =>
{
options.Listener.AuthenticationManager.AuthenticationSchemes = AuthenticationSchemes.AllowAnonymous;
});