В настоящее время я изучаю, как реализовать систему единого входа для нашей веб-службы. Это то, что я придумал до сих пор.
- Если у клиента нашей веб-службы есть AzureActiveDirectory, он может войти в систему со своей учетной записью активного каталога в нашу веб-службу, если мы предоставим необходимые интерфейсы для SAML, Oauth2, OpenID или любого другого протокола авторизации, который мы выбрали и поддерживает Azure.
- Клиенты также могут синхронизировать свою локальную сеть Active Directory с их Azure AD и использовать свои учетные записи домена для входа в наше веб-приложение.
- Клиентам необходимо использовать портал myapps.microsoft.com для «обертывания» аутентификации.
- После того, как все настроено правильно, поставщик удостоверений (AzureAD) сможет использовать (например) удостоверение пользователя, прошедшее проверку подлинности.
Вот тут и началась моя проблема. Конечно, мне нужно каким-то образом сопоставить удостоверение, предоставленное AzureAD, с определенной учетной записью для нашей веб-службы - мы не можем просто использовать предоставленное удостоверение.
Насколько я понимаю, вы можете предоставить AzureAD право на создание учетной записи на целевой веб-службе от имени пользователя, который в настоящее время входит в систему. (Это называется: включение автоматической подготовки пользователей на портале управления Azure).
Однако при тестировании этого с приложениями Box, Canvas или Google я потерпел неудачу. Либо у меня возникла ошибка, либо в случае приложений Google мне просто предложили войти в систему с моей тестовой учетной записью Azure AD, а затем попросили пароль и имя пользователя моей учетной записи Google (я настроил единый вход в качестве отношения доверия Azure AD - так что это не должно происходить)
Может ли кто-нибудь дать представление о том, как достичь следующего?
После аутентификации пользователя с помощью SSO я хочу создать учетную запись для нашего WebSerivce, а затем сохранить учетные данные для этого пользователя только в Active Directory этого конкретного пользователя. Поэтому, если пользователь входит в систему во второй раз, мы можем проверить, существует ли уже существующая учетная запись, и войти в систему с этой учетной записью.
(Microsoft сказала мне, что это возможно с помощью Azure Rights Management, но я не могу найти хорошую документацию по этому поводу)
Сохранение отношения: «Microsoft AD Identity ‹-> наши учетные данные WebServiceAccount» на нашей стороне нежелательно, потому что мы не можем надежно зашифровать данные способом, которым мы НЕ ЗНАЕМ, что там находится. (или есть, и я еще не знаю об этом)
«Дополнительный вопрос»: Могу ли я поддерживать систему единого входа и для настольного приложения? (Нужно ли мне предоставлять прокси-веб-приложение или настольное приложение может сделать это напрямую?)