Федерация и доверие

В этом разделе рассматриваются различные аспекты, связанные с федеративными приложениями, границами доверия и конфигурацией, а также использованием выданных маркеров в Windows Communication Foundation (WCF).

Службы, службы маркеров безопасности и доверие

Службы, предоставляющие федеративные конечные точки, обычно ожидают, что проверка подлинности клиентов будет выполняться с использованием маркеров, предоставленных определенным издателем. Важно, чтобы в службе были настроены правильные учетные данные этого издателя; в противном случае служба не сможет проверять сигнатуры в выданных токенах и клиент не сможет взаимодействовать со службой. Дополнительные сведения о настройке учетных данных издателя в службе см. в разделе "Практическое руководство. Настройка учетных данных в службе федерации".

Аналогично, при использовании симметричных ключей они шифруются для целевой службы, поэтому необходимо настроить в службе маркеров безопасности правильные учетные данные целевой службы; в противном случае она не сможет зашифровать ключ для целевой службы, и клиент не сможет взаимодействовать со службой.

Службы WCF используют значение MaxClockSkew свойства в SecurityBindingElement , чтобы разрешить отклонение часов между клиентом и службой. В федерации параметр MaxClockSkew применяется к рассогласованию часов как для клиента, так и для службы маркеров безопасности, от которой клиент получил выданный маркер. Поэтому службам маркеров безопасности при задании времени начала и истечения срока действия выданных маркеров не требуется учитывать рассогласование часов.

Примечание.

Важность рассогласования часов возрастает по мере уменьшения времени существования выданных маркеров. В большинстве случаев рассогласование часов не оказывает существенного влияния, если время существования маркера составляет 30 минут и более. В сценариях, в которых время существования меньше или в которых важно точное время действия маркера, необходимо учитывать рассогласование часов.

Федеративные конечные точки и значения времени ожидания

Когда клиент взаимодействует с федеративной конечной точкой, он должен сначала получить соответствующий маркер от службы маркеров безопасности. Если служба маркеров безопасности предоставляет федеративную конечную точку, клиент должен сначала получить маркер от издателя этой конечной точки. Каждое получение маркера занимает некоторое время, и это время входит в общее время ожидания отправки фактического сообщения на финальную конечную точку.

Например, пусть для канала со стороны клиента задано время ожидания 30 секунд. Перед передачей сообщения на финальную конечную точку требуется обратиться за маркерами к двум издателям, при этом для получения маркера у каждого издателя требуется по 15 секунд. В этом случае попытка завершается со сбоем, и генерируется исключение TimeoutException. Поэтому необходимо установить в клиентском канале значение OperationTimeout, достаточное для учета времени получения всех выданных маркеров. В случае, если для свойства OperationTimeout значение не указано, для свойства OpenTimeout или свойства SendTimeout (или для обоих) необходимо задать значение, достаточное для получения всех выданных маркеров.

Время существования маркера и его обновление

Клиенты WCF не проверка выданный маркер при выполнении первоначального запроса к службе. Скорее, WCF доверяет службе маркеров безопасности для выдачи маркера с соответствующими эффективными и сроками действия. Если клиент кэшировал токен и использовал его заново, время существования токена проверяется при последующих запросах и в случае необходимости клиент автоматически обновляет токен. Дополнительные сведения о кэшировании маркеров см. в статье "Практическое руководство. Создание федеративного клиента".

Указание короткого времени существования в порядке 30 секунд или меньше для выданных маркеров или маркеров контекста безопасности может привести к истечению времени ожидания переговоров или другим исключениям, создаваемым клиентами WCF при запросе выданных маркеров или при согласовании или возобновлении маркеров контекста безопасности.

Выданные маркеры и InclusionMode

Сериализация выданного маркера в сообщении, передаваемом клиентом в федеративную конечную точку, определяется заданием свойства InclusionMode класса SecurityTokenParameters. Этому свойству можно присвоить одно из значений перечисления SecurityTokenInclusionMode, но в большинстве федеративных сценариев это бесполезно. Значения SecurityTokenInclusionMode.Never и SecurityTokenInclusionMode.AlwaysToInitiator приводят к тому, что клиент отправляет проверяющей стороне ссылку на маркер, выданный службой маркеров безопасности. Если у проверяющей стороны нет копии выданного токена, проверка подлинности завершится сбоем, так как ссылка на токен не может быть разрешена. WCF обрабатывается SecurityTokenInclusionMode.Once как эквивалент SecurityTokenInclusionMode.AlwaysToRecipient.

См. также