В настоящее время мы рассматриваем возможность внедрения собственной STS (Microsoft WIF) для аутентификации наших пользователей, и в ходе этого процесса у нас возникло несколько вопросов, на которые мы не смогли ответить.
У нас разные пользователи, использующие разные виды приложений. Каждый вид пользователей нуждается в некоторых особых типах утверждений, относящихся только к этому типу пользователей и принадлежности приложения.
Обратите внимание, что мы не контролируем всех клиентов.
Допустим, все пользователи авторизованы с использованием простого https с использованием имени пользователя и пароля (.NET MVC3). Пользователь уникально идентифицируется по его типу, имени пользователя и паролю (не только имя пользователя и пароль). Поэтому мне нужно будет создать конечную точку для каждого типа пользователя, чтобы иметь возможность различать их. Когда пользователь авторизуется, я выдаю токен, содержащий утверждение, представляющее тип пользователя. Есть ли более простой способ сделать это? Можно ли избежать конечной точки для каждого типа пользователя (в настоящее время их три)?
Моя служба токенов может затем проверять токен авторизованных пользователей и преобразовывать утверждения, выдавая токен, содержащий все утверждения, относящиеся к типу пользователей. Пока все хорошо, за исключением нескольких конечных точек, я думаю?
Если мне нужно иметь несколько конечных точек, должен ли я также предоставлять различные документы метаданных, по одному для каждой конечной точки? Наличие одного большого документа метаданных, содержащего описание всех утверждений, не имеет никакого смысла, поскольку не существует приложения, которому требуются все утверждения.
Обновление
Некоторые уточнения.
Некоторые приложения используются только определенными типами пользователей. Ни одно приложение не может использоваться несколькими типами пользователей.
В зависимости от типа приложения, из которого поступает запрос, необходимо сопоставить имя пользователя и пароли для этого типа пользователя. Для каждого типа приложений существуют пользовательские хранилища. Вот почему мне нужно знать, из какого типа приложения поступает запрос. Я не могу определить тип только по имени пользователя и паролю.