Ejemplo n.º 1
0
 public Task <ExternalAuthenticateResult> AuthenticateExternalAsync(string subject, Thinktecture.IdentityServer.Core.Models.ExternalIdentity user)
 {
     throw new NotImplementedException();
 }
Ejemplo n.º 2
0
 public Task <Thinktecture.IdentityServer.Core.Authentication.ExternalAuthenticateResult> AuthenticateExternalAsync(string subject, Thinktecture.IdentityServer.Core.Models.ExternalIdentity externalUser)
 {
     return(Task.FromResult <ExternalAuthenticateResult>(null));
 }
Ejemplo n.º 3
0
        public Task <Thinktecture.IdentityServer.Core.Authentication.ExternalAuthenticateResult> AuthenticateExternalAsync(string subject, Thinktecture.IdentityServer.Core.Models.ExternalIdentity externalUser)
        {
            // look for the user in our local identity system from the external identifiers
            var    user = Users.SingleOrDefault(x => x.Provider == externalUser.Provider.Name && x.ProviderID == externalUser.ProviderId);
            string name = "Unknown";

            if (user == null)
            {
                // new user, so add them here
                var nameClaim = externalUser.Claims.First(x => x.Type == Constants.ClaimTypes.Name);
                if (nameClaim != null)
                {
                    name = nameClaim.Value;
                }

                user = new CustomUser {
                    Subject    = Guid.NewGuid().ToString(),
                    Provider   = externalUser.Provider.Name,
                    ProviderID = externalUser.ProviderId,
                    Claims     = new List <Claim> {
                        new Claim(Constants.ClaimTypes.Name, name)
                    }
                };
                Users.Add(user);
            }

            name = user.Claims.First(x => x.Type == Constants.ClaimTypes.Name).Value;

            if (user.IsRegistered)
            {
                // user not registered so we will issue a partial login and redirect them to our registration page
                return(Task.FromResult <ExternalAuthenticateResult>(new ExternalAuthenticateResult(user.Provider, user.Subject, name)));
            }
            else
            {
                // user is registered so continue
                return(Task.FromResult <ExternalAuthenticateResult>(new ExternalAuthenticateResult("/core/externalregistration", user.Provider, user.Subject, name)));
            }
        }