我正在与两个第三方提供程序(LDAP和SAML)一起使用身份框架。当用户通过LDAP或SAML登录时,我想创建一个cookie并将其存储在数据库中。在我的services.AddAuthentication中添加.AddCookie()选项之后,我想知道正在发生什么以及何时创建此cookie。
我能够通过LDAP成功进行身份验证并返回生成的令牌。由于我使用自己的LDAP身份验证实现,因此我猜想它需要通过Identity的SignInManager才能生成Cookie?
我希望解释一下触发此处指定的cookie生成的原因。
services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
.AddCookie(CookieAuthenticationDefaults.AuthenticationScheme, options =>
{
options.Cookie.Name = "MyCookie.Identity";
options.Cookie.Expiration = TimeSpan.FromDays(1);
});
作为参考,这是进行ldap身份验证的代码
using (var pc = new PrincipalContext(ContextType.Domain, this.ldapDomain, this.ldapUser, this.ldapPass))
{
if (pc.ValidateCredentials(user.Login, user.Password))
{
string newToken = Guid.NewGuid().ToString();
LDAPUserManager.ValidUsers[newToken] = user.Login;
try
{
UserPrincipal up = UserPrincipal.FindByIdentity(pc, IdentityType.SamAccountName, user.Login);
LDAPUserManager.UserGroups[newToken] = up?.GetGroups()?.Select(g => g.Name) ?? Array.Empty<string>();
}
catch
{
LDAPUserManager.UserGroups[newToken] = Array.Empty<string>();
}
return newToken;
}
}
使用LDAP登录后,不会生成任何cookie。如果是这样,则不确定在哪里生成或如何将其发送回浏览器。