.NET: передача учетных данных пользователя через транспортный уровень - PullRequest
2 голосов
/ 27 сентября 2010

Какой самый лучший / самый простой способ передачи учетных данных пользователя (Active Directory) через транспортный уровень.

У меня есть две системы A и B, связанные со сторонним уровнем сообщений C.

Есть ли способ (предпочтительно в .NET) каким-либо образом сохранить / сериализовать учетные данные аутентифицированного пользователя на стороне A, передать его через C, затем десериализовать его на стороне B и затем сделать вызов в нижестоящую систему D с использованием десериализованных учетных данных?

Ответы [ 2 ]

2 голосов
/ 27 октября 2010

Чтобы "отключить" учетные данные в другой системе, которая может быть аутентифицирована одним из интерфейсов аутентификации AD, вам необходим либо протокол с защитой от подражания (например, Kerberos), либо сами необработанные учетные данные (иногда их называют "базовыми"). или «имя пользователя / пароль», но при определенных обстоятельствах может также быть чем-то вроде пары ключей RSA) и, необязательно, структурой, в которой можно обернуть эти учетные данные (например, WS-Sec, SAML).

Маркер доступа , сгенерированный LSA Windows, действителен только в системе, в которой был создан токен - если вы сериализовали и десериализовали токен из одной системы в другую, LSA не примет его в качестве доказательства того, что процесс был аутентифицирован этой целевой системой и имел какое-либо право на доступ к любому защищенному ресурсу в системе. В противном случае вы будете говорить о системе, подвергающейся атакам повторного воспроизведения (взятие контекста безопасности из одного блока и его повторное воспроизведение - злонамеренно или иным образом, модели угроз безопасности будет безразлично - в другом).

Таким образом, «самый простой» способ сделать это - заставить свой код ввести имя пользователя и пароль. Это также сценарий, наиболее подверженный недостаткам безопасности, и любая разумная организация захлебнется, если их приложения сделают что-то грубое, но это - теоретический вариант.

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

0 голосов
/ 27 сентября 2010

Это называется олицетворением, но без каких-либо подробностей о базовых системах я не могу сказать, будет ли это поддерживаться.

Если система основана на WCF, это определенно возможно. Эта MSDN страница содержит все детали.

...