Нужен ли STS сертификат RP? - PullRequest
1 голос
/ 22 июля 2011

У меня есть пользовательский STS, построенный с WIF.Если у меня есть проверяющая сторона и STS на одном сервере, я могу заставить его работать.

Однако при использовании удаленного компьютера я получаю ошибки ID4036.Покопавшись в этом, я обнаружил, что по умолчанию в моей STS всегда шифруется исходящий токен с локальным сертификатом, а не с сертификатом, запрашиваемым проверяющей стороной.Одним из решений будет установка сертификата, используемого проверяющей стороной (только с открытым ключом), на STS и кодирование STS для использования этого сертификата.

Однако это создает проблему, так как я добавляю другие проверяющие стороны в другиесерверы.

Вот пример:

STS на MySTS - подписывает токены с помощью SigningCert.

Проверяющая сторона на MyWebServer01 - хочет зашифровать / расшифровать с MyWebServer01Cert (владеет публичным / приватнымключ)

Я могу установить MyWebServer01Cert на MySTS и настроить STS на его использование для шифрования токенов, и все должно работать.Однако, допустим, я хочу добавить приложение проверяющей стороны в MyWebServer02.Он не будет работать, пока я не установлю открытый и закрытый ключи MyWebServer01Cert.

Я бы подумал, что вы можете просто передать открытый ключ в STS, и каждый RP может использовать свой собственный - что-то вроде SSL.Разве это не так?

Любая помощь / предложения будут оценены.

1 Ответ

1 голос
/ 22 июля 2011

Прежде всего, для шифрования нужен только открытый ключ. Вы на самом деле никогда не хотите отдавать закрытый ключ сертификата.

Если вы используете протокол федерации WS (обычно используемый для сценариев STS на веб-сайтах), запрос к STS отправляется не вашим сервером RP, а браузером пользователя. Я не сомневаюсь, что вы позвоните и скажете браузеру использовать открытый ключ предыдущего сайта для связи через https. С другой стороны, зашифрованный токен дешифруется сервером rp (это означает, что RP-сервер должен знать закрытый ключ сертификата, используемого для шифрования токена).

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

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

...