在为Services.AddAuthentication添加CookieAuthenticationDefaults之后,何时生成cookie并将其存储?

时间:2019-06-27 21:37:27

标签: c# asp.net-core cookies ldap asp.net-identity

我正在与两个第三方提供程序(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。如果是这样,则不确定在哪里生成或如何将其发送回浏览器。

0 个答案:

没有答案