2015-04-01 4 views
2

Я разрабатываю клиент-серверное приложение. При использовании этого приложения клиенты и сервер имеют одинаковый домен AD (Active Directory).Как получить токен Active Directory пользователя?

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

Одно решение отправляет пользовательское имя пользователя AD. Из-за соображений безопасности это решение неприемлемо.

Другое решение отправляет пользовательский токен AD (который предоставляется пользователю AD при входе в Windows). В этом решении сервер может проверить достоверность этого токена и, таким образом, он может распознавать пользователя AD клиента и аутентифицировать его. Теперь проблема в том, что в реализации клиентского приложения я не знаю, как получить токен AD.

Я использую C# для реализации клиентского приложения. Не могли бы вы мне помочь? Или у вас есть лучшее решение для такого рода аутентификации?

ответ

1

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

string tenantName = "yourdirectoryName.OnMicrosoft.com"; 
      string authString = "https://login.microsoftonline.com/" + tenantName; 
      AuthenticationContext authenticationContext = new AuthenticationContext(authString, false); 
      // Config for OAuth client credentials    
      ClientCredential clientCred = new ClientCredential(clientId, appKey); 
      string resource = "https://graph.windows.net"; 
      string token; 
      try 
      { 
       AuthenticationResult authenticationResult = authenticationContext.AcquireToken(resource, clientCred); 
       token = authenticationResult.AccessToken; 
      } 
      catch (AuthenticationException ex) 
      { 
       Console.ForegroundColor = ConsoleColor.Red; 
       Console.WriteLine("Acquiring a token failed with the following error: {0}", ex.Message); 
       if (ex.InnerException != null) 
       { 
        Console.WriteLine("Error detail: {0}", ex.InnerException.Message); 
       } 
      } 
+0

Привет @Kurkula, пожалуйста, вы можете объяснить мне, что должно быть значения «tenantName», «ClientId», «appKey» и «ресурс» и где я могу их получить? Благодарю. У меня такой же вопрос с автором выше. – Anthony

Смежные вопросы