public Task <ExternalAuthenticateResult> AuthenticateExternalAsync(string subject, Thinktecture.IdentityServer.Core.Models.ExternalIdentity user) { throw new NotImplementedException(); }
public Task <Thinktecture.IdentityServer.Core.Authentication.ExternalAuthenticateResult> AuthenticateExternalAsync(string subject, Thinktecture.IdentityServer.Core.Models.ExternalIdentity externalUser) { return(Task.FromResult <ExternalAuthenticateResult>(null)); }
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))); } }