Я работаю над федерацией приложения с различными областями и чрезвычайно точными разрешениями. Каждая из различных областей имеет федеративную конечную точку WCF для обратной связи с сервером. Из-за мелкозернистых разрешений один токен, содержащий все разрешения, может иметь размер до 1 МБ, а может и больше.
Требования диктуют, что учетные данные пользователя и пароль не должны храниться в нашей кодовой базе после первоначального процесса входа в систему. Разрешения не могут быть объединены для создания меньшего набора. Мы используем Thinktecture.IdentityServer для нашей реализации STS.
Мое предлагаемое решение состоит в том, чтобы разбить каждую конечную точку на собственную область в STS, и STS вернет токен с утверждениями о разрешении, указанными для области. Для этого я хотел бы иметь область аутентификации, которая аутентифицируется по имени пользователя/паролю и возвращает токен, содержащий идентификаторы пользователя, арендатора и подгруппы, которые затем можно было бы использовать в качестве учетных данных для аутентификации в других областях.
Настройка STS для выпуска токенов, характерных для областей, уже реализована. Единственное оставшееся требование состоит в том, чтобы имя пользователя и пароль не хранились в нашей кодовой базе.
Можно ли настроить STS, чтобы разрешить аутентификацию, предоставив ранее выпущенный токен из определенной области? Есть ли лучшее решение, которого я не нашел?