Путь URL токена Azure Active Directory? - PullRequest
0 голосов
/ 22 января 2019

У меня есть одностраничное приложение, которое взаимодействует с веб-API, который я пытаюсь защитить с помощью Azure Active Directory.Я делал это перед использованием локальной базы данных SQL с локальными учетными записями и OAuth2, но я никогда не делал этого с Azure Active Directory.

Я создал новый проект веб-API MVC в Visual Studio 2017 и установил проверку подлинностичасть в «Облако - Единая Организация» и введен в соответствующий домен.API заставил меня войти в процессе создания.Предоставленная мной информация для входа была введена в файл Web.Config.

<appSettings>
  <add key="ida:Tenant" value="domain.net" />
  <add key="ida:Audience" value="domain.net/WebAPI" />
  <add key="ida:ClientID" value="XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX" />
  <add key="ida:Password" value="XXXXXXXXXXXXXXXXXXXXXXXXXXX" />
 </appSettings>

Затем в новом файле Startup.Auth.cs у меня есть следующее:

public partial class Startup
{
    // For more information on configuring authentication, please visit https://go.microsoft.com/fwlink/?LinkId=301864
    public void ConfigureAuth(IAppBuilder app)
    {
        app.UseWindowsAzureActiveDirectoryBearerAuthentication(
            new WindowsAzureActiveDirectoryBearerAuthenticationOptions
            {
                Tenant = ConfigurationManager.AppSettings["ida:Tenant"],
                TokenValidationParameters = new TokenValidationParameters {
                     ValidAudience = ConfigurationManager.AppSettings["ida:Audience"]
                },
            });
    }
}

Не знаюЯ не вижу пути, по которому я могу позвонить туда, чтобы инициировать вход в систему.В моем исходном проекте это был путь / Token, который показан ниже из моего исходного файла Startup.Auth.cs.

PublicClientId = "self";
        OAuthOptions = new OAuthAuthorizationServerOptions
        {
            TokenEndpointPath = new PathString("/Token"),
            Provider = new ApplicationOAuthProvider(PublicClientId),
            AuthorizeEndpointPath = new PathString("/api/Account/ExternalLogin"),
            AccessTokenExpireTimeSpan = TimeSpan.FromHours(12),
            RefreshTokenProvider = new ApplicationRefreshTokenProvider(),
        };

В моем исходном проекте для инициализации входа в систему я использовал бы / Token вВызовите Ajax и передайте имя пользователя и пароль.

$.ajax({
    url: url.getURL() + '/token',
    method: 'POST',
    data: {
        username: username,
        password: password,
        grant_type: 'password'
    },

Как инициировать вход в систему в новом веб-API, использующем Azure Active Directory?Я не вижу пути / токена или чего-либо подобного в файле Startup.Auth.cs.Это то, что я должен добавить, или в настройках проекта автоматически используются учетные данные, которые я ввел при первом создании проекта?

1 Ответ

0 голосов
/ 23 января 2019

При подключении веб-API к Azure Active Directory отсутствует URL-адрес «/ token» для вызова входа в систему.Вы должны направить пользователей на следующий веб-сайт:

http://login.microsoftonline.com/{domain}/oauth2/v2.0/authorize?client_id={client_id}&response_type=id_token&scope=openid&response_mode=fragment&state=12345&nonce=678910

Убедитесь, что вы вводите фактические переменные домена и client_id для своего приложения, которые перечислены в Azure.Кроме того, в Azure убедитесь, что URL-адреса ответа установлены.API будет перенаправлять обратно на ваш сайт после завершения входа в систему.Это работает для localhost.

...