Taylohtio/IDP/identityserver/Extensions/TaloyhtioUserService.cs

51 lines
1.6 KiB
C#

using IdentityServer.Models;
using IdentityServer3.Core.Extensions;
using IdentityServer3.Core.Models;
using IdentityServer3.Core.Services.Default;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
namespace IdentityServer.Extensions
{
public class TaloyhtioUserService : UserServiceBase
{
private static readonly List<TaloyhtioUser> Users = new List<TaloyhtioUser>();
public static Task AddUserAsync(TaloyhtioUser data)
{
var user = Users.SingleOrDefault(x => x.Username == data.Username);
if (user == null)
{
Users.Add(data);
}
else
{
user.Claims = data.Claims;
}
return Task.FromResult(0);
}
public override Task AuthenticateLocalAsync(LocalAuthenticationContext context)
{
var user = Users.SingleOrDefault(x => x.Username == context.UserName /*&& x.Password == context.Password*/);
if (user != null)
{
context.AuthenticateResult = new AuthenticateResult(user.Subject, user.Username);
}
return Task.FromResult(0);
}
public override Task GetProfileDataAsync(ProfileDataRequestContext context)
{
var user = Users.SingleOrDefault(x => x.Subject == context.Subject.GetSubjectId());
if (user != null)
{
context.IssuedClaims = user.Claims.Where(x => context.RequestedClaimTypes.Contains(x.Type));
}
return Task.FromResult(0);
}
}
}