В чем разница между проверкой подлинности MicrosoftAccount, AzureAD и OpenIdConnect? - PullRequest
1 голос
/ 04 апреля 2020

Я совсем запутался, пытаясь понять различия между MicrosoftAccount , AzureAD и OpenIDConnect аутентификации.

Я пытаюсь построить a. Net Core MVC приложение, которое позволяет некоторым пользователям проходить аутентификацию с локальными учетными записями, а некоторые - с учетными записями Microsoft. Мне нужно иметь локального пользователя в БД для обоих типов аутентификации, поскольку у меня есть несколько пользовательских механизмов авторизации, построенных на этом.

Я начал с создания приложения из шаблона и выбрал аутентификацию «локальных учетных записей». Затем я добавил аутентификацию MicrosoftAccount в соответствии с этим руководством (https://docs.microsoft.com/en-us/aspnet/core/security/authentication/social/microsoft-logins?view=aspnetcore-3.1) . Это использует Microsoft.AspNetCore.Authentication.MicrosoftAccount и, кажется, работает нормально.

Однако, когда я создаю новое приложение из шаблона и выбираю аутентификацию «рабочая или учебная учетная запись», я вижу, что она использует другую библиотеку - Microsoft.AspNetCore.Authentication.AzureAD.UI. Кажется, делают то же самое. Я вижу, что есть события, к которым я мог подключиться, чтобы подключить пользователя AAD к моей локальной БД.

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

Чем эти методы отличаются? Какой из них я должен использовать и почему?

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

1 Ответ

3 голосов
/ 04 апреля 2020
  • MicrosoftAccount : это логин с общей учетной записью Microsoft, использующий OAuth2. Это также то, что Microsoft будет называть «частной учетной записью» и полезно, когда вы хотите аутентифицировать кого-то, просто используя свою учетную запись Microsoft в качестве внешнего поставщика аутентификации. Это похоже на то, как вы входите на сайты с помощью своей учетной записи Google.
  • AzureAD : это вход в указанный клиент c Azure. Это часто понимается как «рабочая или учебная учетная запись», потому что она не подписывает людей, использующих общедоступную учетную запись c, а скорее создает учетную запись, привязанную к какой-либо организации. Обычно у вас есть арендатор Azure, в котором у вас есть прямые пользователи (или вы настроите его для разрешения внешних пользователей), но вы хотите контролировать доступ через этот Azure AD.
  • OpenIdConnect: это Общий протокол OpenID Connect, который вы можете использовать для входа в систему со многими различными поставщиками аутентификации, потому что это протокол, который поддержат многие из них. Вы можете использовать OID C для входа в любой из вышеперечисленных (и во многие другие сервисы), но для этого вам потребуется выполнить дополнительную настройку, так как вам потребуется выяснить, например, указанные c адреса.

Вы всегда можете использовать схему аутентификации OpenIdConnect или OAuth для аутентификации у большинства провайдеров аутентификации, но это «ручные» схемы, которые потребуют от вас настройки дополнительных параметров. , Все другие схемы аутентификации, включая MicrosoftAccount и AzureAD , но также и другие, такие как Google или Twitter , построены на основе этих протоколов и Приходите с предварительно настроенными настройками, чтобы вам не нужно было настраивать многое другое. Так что это в основном для удобства и для более специализированной поддержки.

Поэтому, если вы хотите пройти аутентификацию через Microsoft или Azure, тогда вам следует выбрать MicrosoftAccount или AzureAD, Что из этого зависит от того, где вы хотите пройти аутентификацию. Если у вас Azure AD, то вы должны использовать это.

...