public async void SetExternalLogin(ExternalLoginData externalLogin, string authenticationType, string cookies)
        {
            var user = await UserManager.FindAsync(new UserLoginInfo(externalLogin.LoginProvider, externalLogin.ProviderKey));

            var hasRegistered = user != null;

            if (hasRegistered)
            {
                AuthenticationManager.SignOut(DefaultAuthenticationTypes.ExternalCookie);

                var oAuthIdentity = await user.GenerateUserIdentityAsync(UserManager, authenticationType);

                var cookieIdentity = await user.GenerateUserIdentityAsync(UserManager, cookies);

                var properties = AuthenticationPropertiesConfig.CreateProperties(oAuthIdentity);

                AuthenticationManager.SignIn(properties, oAuthIdentity, cookieIdentity);
            }
            else
            {
                IEnumerable <Claim> claims = externalLogin.GetClaims();
                var identity = new ClaimsIdentity(claims, authenticationType);

                AuthenticationManager.SignIn(identity);
            }
        }
Beispiel #2
0
 public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context)
 {
     await AuthenticationPropertiesConfig.GrantResourceOwnerCredentials(context, CookieAuthenticationDefaults.AuthenticationType);
 }