Зарегистрируйте электронную почту Azure AD в таблицах удостоверений ASP.NET. - PullRequest
1 голос
/ 23 сентября 2019

Я создаю систему отчетов, которая позволяет пользователям входить в систему с использованием учетных данных Azure, которые затем они подписываются / отменяют подписку на отчеты.

В настоящее время используется удостоверение ASP.NET, которое отлично работает, но требует дополнительной поддержки ИТ.когда люди забывают свои учетные данные и т. д.

Как сохранить учетные данные Azure в ASP.NET Identity?Как это происходит с другими внешними провайдерами, такими как Facebook и т. Д., Или вы не хотите использовать ASP.NET Identity вместе и сохранить адрес электронной почты в таблице и ссылаться на эту таблицу вместо версии ASP.NET Identity?

Startup.cs

            services.AddAuthentication(AzureADDefaults.AuthenticationScheme)
            .AddAzureAD(options => Configuration.Bind("AzureAd", options));

        services.Configure<OpenIdConnectOptions>(AzureADDefaults.OpenIdScheme, options =>
        {
            options.Authority = options.Authority + "/v2.0/";

            // Per the code below, this application signs in users in any Work and School
            // accounts and any Microsoft Personal Accounts.
            // If you want to direct Azure AD to restrict the users that can sign-in, change 
            // the tenant value of the appsettings.json file in the following way:
            // - only Work and School accounts => 'organizations'
            // - only Microsoft Personal accounts => 'consumers'
            // - Work and School and Personal accounts => 'common'

            // If you want to restrict the users that can sign-in to only one tenant
            // set the tenant value in the appsettings.json file to the tenant ID of this
            // organization, and set ValidateIssuer below to true.

            // If you want to restrict the users that can sign-in to several organizations
            // Set the tenant value in the appsettings.json file to 'organizations', set
            // ValidateIssuer, above to 'true', and add the issuers you want to accept to the
            // options.TokenValidationParameters.ValidIssuers collection
            options.TokenValidationParameters.ValidateIssuer = false;

            // Custom
            options.Scope.Add("email");
            //options.Scope.Add("profile");
            options.SaveTokens = true;
            options.GetClaimsFromUserInfoEndpoint = true;

            options.TokenValidationParameters = new TokenValidationParameters
            {
                NameClaimType = "name"
            };
        });

Спасибо за чтение.

РЕДАКТИРОВАТЬ: сейчас я просто использую событие TokenValidated, а затем создаю пользователя с помощью UserManager с CreateAsync.

Ответы [ 2 ]

1 голос
/ 24 сентября 2019

Если используется идентификатор ядра asp.net с Azure AD в качестве внешнего поставщика идентификаторов.После входа в систему с использованием AAD идентификация asp.net поможет создать локального пользователя, пользователь может ввести свой адрес электронной почты AAD, чтобы в базе данных можно было узнать, какой локальный пользователь связан с конкретным пользователем Azure AD.Затем вы можете реализовать пользовательскую логику, такую ​​как авторизация, в локальной базе данных. Но локальный пользователь не повлияет на пользователя AAD, изменение учетных данных локальной учетной записи не повлияет на учетные данные пользователя AAD в облаке.В следующий раз вам все равно нужно будет войти в систему с использованием AAD в качестве поставщика удостоверений, а не учетной записи локального пользователя.

Вам не нужно и не следует сохранять учетные данные Azure в локальной базе данных.Если вы хотите сбросить учетные данные конкретного пользователя, вы можете использовать Microsoft Graph до , чтобы обновить пользователя .Ваш администратор (ИТ) должен иметь правильное разрешение (User.ReadWrite.All или Directory.ReadWrite.All делегированные разрешения) для изменения информации другого пользователя в клиенте.

Здесь - документ Microsoft Graph Auth и здесь - пример кода для ASP.NET Core.

0 голосов
/ 24 сентября 2019

Я не думаю, что сохранение учетных данных Azure в ASP.NET Identity является полезным способом достижения вашей цели.

Если вы хотите использовать учетные данные Azure для входа в систему, вам необходима интеграция Azure AD.в ваше базовое веб-приложение ASP.NET, чтобы пользователи могли войти с рабочей и учебной учетной записью.

Подробные шаги / примеры для быстрого начала здесь: Добавьте вход в Microsoft с ASP.Веб-приложение NET Core и Azure Active Directory с ASP.NET Core .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...