我从过去发现了很多信息,说LDAP身份验证尚未启用,但您可以使用第三方软件包解决这个问题. 但是,似乎在1月份实施了LDAP身份验证WAS .我似乎无法找到任何关于如何实现它的信息.
我已经在我的项目中设置了自定义身份验证,我只需要逻辑来填写HandleAuthenticateAsync方法.
我尝试过使用其他示例,但它们似乎不适用于.NET Core 2.0.
这是我能想到的唯一相关代码
protected override Task<AuthenticateResult> HandleAuthenticateAsync()
{
// Get Authorization header value
if (!Request.Headers.TryGetValue(HeaderNames.Authorization, out var authorization)) {
return Task.FromResult(AuthenticateResult.Fail("Cannot read authorization header."));
}
// TODO: Authenticate user
// Create authenticated user ticket
var identities = new List<ClaimsIdentity> { new ClaimsIdentity("custom auth type") };
var ticket = new AuthenticationTicket(new ClaimsPrincipal(identities), Options.Scheme);
return Task.FromResult(AuthenticateResult.Success(ticket));
// else User not authenticated
return Task.FromResult(AuthenticateResult.Fail("Invalid auth key."));
}
Run Code Online (Sandbox Code Playgroud)
所以,我的问题是,如何在.NET Core …
我知道私钥身份验证有效,但是我正在寻找公钥身份验证。
我正在尝试使用 SSH.NET 和公钥建立连接。
在 Git Bash 终端中,我可以使用公钥很好地连接并运行命令,但是当我尝试使用 SSH.NET 连接到同一主机时,出现异常。
这是我尝试连接的方式:
using (var client = new SshClient("host.name.com", port, "username"))
{
client.Connect(); // exception thrown here
}
Run Code Online (Sandbox Code Playgroud)
我也尝试过这条路线:
var authMethod = new PrivateKeyAuthenticationMethod("username");
var info = new ConnectionInfo("host.name.com", port, "username", authMethod);
using (var client = new SshClient(info))
Run Code Online (Sandbox Code Playgroud)
两者都给出相同的例外:Permission denied (publickey).
似乎我需要指定我的公钥在哪里,或者我需要将我的公钥放在某个位置,但我找不到任何文档告诉我将其放在哪里。