Парольный вход на STS
От: d1mmm  
Дата: 24.03.15 08:30
Оценка:
Приветствую
Есть активный 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 кто конкретно обратился?

Судя по всему вопрос нетривиальный поскольку:

Я могу предположить, что сделать два CustomUserNameSecurityTokenHandler для разных TokenType все таки можно, но как это сделать совершенно не ясно
Есть идеи?
sts wif usernamesecuritytokenhandler securitytoken
Re: Парольный вход на STS
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 24.03.15 11:11
Оценка:
Здравствуйте, d1mmm, Вы писали:

D>Есть идеи?

Ну самое очевидное, что приходит на ум — сделать 2 endpoint с 2-я конфигурациями: в одной будет использоваться первый TokenHandler, а в другой — второй. В остальном они будут идентичны.
Соответственно, разные клиенты будут обращаться к разным Endpoint.

Не сильно масштабируемое решение (в смысле, если групп станет не 2, а 100 — идея выглядит не сильно привлекательной), но зато просто.
Re[2]: Парольный вход на STS
От: d1mmm  
Дата: 24.03.15 11:48
Оценка:
Михаил, добрый день
Дело в том, что количество endpoints никак не влияет на инфраструктуру хендлеров. Хендлеры ставятся на STS безотносительно поднятых endpoints.
Даже если будет два эндпоинта, все равно все запросы при логине будут сваливаться в один хендлер.
Или вы имеете в виду два отдельных STS по сути?
Re[3]: Парольный вход на STS
От: Михаил Романов Удмуртия https://mihailromanov.wordpress.com/
Дата: 24.03.15 13:00
Оценка:
Здравствуйте, d1mmm, Вы писали:

D>Или вы имеете в виду два отдельных STS по сути?

Ну да.
Код самого сервиса будет единым. Будут только разные конфигурации (и различаться будут только в одном месте — там где формируется коллекция TokenHandlers, т.е. можно будет решить через наследование, чтобы не плодить копий кода).
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.