Как видите, федерация не обязательно устраняет потребность в подготовке. Это важное понимание, которое не сразу очевидно.
Есть несколько способов решить эту проблему, в том числе:
- Использование продукта мета- или виртуального каталога или
- С помощью «подготовки JIT» («динамическая подготовка» или «подготовка на лету»).
Позвольте мне объяснить последнее. Это решение, которое я также описываю в своем блоге , включает две STS, IP-STS и RP-STS. Первый аутентифицирует исключительно пользователя; второй специфичен для вашего приложения и знает, какие утверждения необходимы для авторизации пользователей этой системы. IP-STS не может выдавать эти специфичные для приложения атрибуты, для этого потребуется, чтобы ваша корпоративная служба каталогов была загромождена всевозможной информацией, относящейся к конкретному приложению. Вместо этого атрибуты для пользователей, которые поддерживаются в этом хранилище и выдаются IP-STS, носят общий характер и применимы к пользователю независимо от того, какое приложение он использует. После аутентификации на IP-STS и получения от него утверждений только об удостоверении маркер передается на RP-STS. Эта служба токенов тесно связана с вашим приложением. Он знает, какие утверждения нужны пользователям для доступа к различным ресурсам. Он может преобразовать утверждения только об удостоверении в требования, необходимые для принятия этого решения по управлению доступом. Итак, RP-STS — это преобразователь утверждений, который сопоставляет утверждения, связанные с удостоверениями, с утверждениями, относящимися к приложению.
Как RP-STS обеспечивает пользователя? Предположим, создан новый сотрудник, как в вашем примере выше. Когда пользователь получает доступ к вашему приложению, он будет перенаправлен на RP-STS. Он не войдет туда, поэтому его перенаправят на IP-STS. Системный администратор создал для него учетную запись, поэтому он сможет войти в систему, и его браузер вернет его обратно к RP-STS. RP-STS взломает токен, получит идентификатор пользователя (адрес электронной почты, PPID и т. д.) и увидит, что ему неизвестно, кто этот пользователь. Таким образом, RP-STS выполнит инициализацию пользователя. Например, он сделает это, отобразив веб-страницу. Он может собирать информацию, которая помогает определить роль этого пользователя при доступе к RP. После этого пользователь будет инициализирован (т. е. в его базе данных будет создана запись, содержащая значения утверждений для него), а RP-STS выдаст токен, специфичный для вашего приложения, и перенаправит его обратно туда. Приложение не будет знать, что его только что инициализировали; он просто будет использовать претензии, как всегда. (Понимаете, почему я назвал это JIT-подготовкой?)
Что, если что-то изменится после инициализации пользователя? В ПОРЯДКЕ. Представьте себе: пользователь был создан в хранилище каталогов много лет назад и был подготовлен, как описано выше, в RP-STS, и он успешно использует систему в течение долгого времени. Затем есть изменение политики, которое требует, чтобы пользователи вашего приложения приняли новые положения и условия (T&Cs). В следующий раз, когда пользователь войдет в приложение, он будет перенаправлен на RP-STS, на IP-STS, пройдет аутентификацию и вернется к вашему RP-STS. В этот момент он заметит, что пользователь должен принять новые Условия и положения, поэтому он покажет пользователю веб-страницу и получит его согласие. После этого RP-STS выдаст токен безопасности и перенаправит его в ваше приложение. Ваше приложение, как всегда, будет обрабатывать претензии и делать все, что необходимо для авторизации доступа. Он не узнает и не будет заботиться о том, что пользователь был только что «переинициализирован». В качестве альтернативы вы можете синхронизировать изменения между хранилищем удостоверений (т. е. вашим корпоративным каталогом) и хранилищем утверждений вашего RP-STS, используя такой продукт, как ILM (или FIM, как он теперь называется). В зависимости от вашей системы продукт, выполняющий синхронизацию с обратным каналом, может оказаться более подходящим.
Кстати, это не "хромые" вопросы! Есть очень острые вопросы, которые отражают глубокую мысль и осмысленное размышление над очень сложной проблемой. Другие, на которые вам нужно будет ответить, включают:
- Как администраторы вашего приложения обновляют его политику (например, меняют Условия и положения)? Какой UI/API вы должны создать? Интегрирован ли пользовательский интерфейс с тем, который используется для управления политикой IP-STS?
- Какого рода доверительные отношения должны существовать, чтобы такая система работала?
- Что, если субъект не использует пассивный профиль? Что, если он использует активный профиль и/или нет пользовательского интерфейса?
- Как и где находятся ключи? Какие разрешения необходимы для использования этих ключей? Как они оцениваются, распространяются и как системные администраторы уведомляются об истечении срока их действия?
Этот материал действительно легко продемонстрировать на собраниях групп пользователей и на конференциях, но на самом деле это очень продвинутый материал. Если у вас есть другие вопросы, задайте их здесь или свяжитесь со мной напрямую .
person
Travis Spencer
schedule
11.12.2009