Приветствую
Есть активный STS с парольным endpoint и кастомным UserNameSecurityTokenHandler.
public class CustomUserNameSecurityTokenHandler : UserNameSecurityTokenHandler
{
public override ClaimsIdentityCollection ValidateToken(System.IdentityModel.Tokens.SecurityToken token)
{
UserNameSecurityToken userNameToken = token as UserNameSecurityToken;
CredentialStore.AuthenticateUser(userNameToken.username, userNameToken.Password);
}
}
Все функционирует нормально, UserNameSecurityToken передается в хендлер с именем пользователя и паролем.
Возник вопрос: каким образом сделать разную валидацию для разных пользователей при условии что они входят на STS по парольному endpoint.
Есть два типа клиентов (пользователи и рабочие станции). Оба они за SecurityToken обращаются на один STS используя в качестве креденшалов u\p. Как определить на CustomUserNameSecurityTokenHandler кто конкретно обратился?
Судя по всему вопрос нетривиальный поскольку:
Никакого дополнительного контекста в этом хендлере нет
Из хендлера нет доступа к RequestSecurityToken где я могу добавить что-либо
Нельзя сделать два UserNameSecurityTokenHandler
Я могу предположить, что сделать два CustomUserNameSecurityTokenHandler для разных TokenType все таки можно, но как это сделать совершенно не ясно
Есть идеи?