UserPasswordCredential не поддерживается в .Net Core - PullRequest
0 голосов
/ 16 ноября 2018

Мне нужно выбрать членов группы из Azure Active Directory, используя Microsoft Graph API.Для этого мне нужен токен авторизации.У меня есть метод в .NET, который аутентифицируется в API как пользователь, и я использую метод UserPasswordCredential для получения токена доступа (путем передачи имени пользователя и пароля).

private static string aadInstance =
ConfigurationManager.AppSettings["ida:AADInstance"];
private static string tenant = 
ConfigurationManager.AppSettings["ida:Tenant"];
private static string clientId = 
ConfigurationManager.AppSettings["ida:ClientId"];
private static string graphResourceId = 
ConfigurationManager.AppSettings["ida:GraphResourceId"];
private static string graphApiVersion = 
ConfigurationManager.AppSettings["ida:GraphApiVersion"];
private static string graphApiEndpoint = 
ConfigurationManager.AppSettings["ida:Gra`phEndpoint"];
private static string appKey = 
ConfigurationManager.AppSettings["ida:appKey"];
private static string authority = 
String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
Uri redirectUri = new 
Uri(ConfigurationManager.AppSettings["ida:RedirectUri"]);
private AuthenticationContext authContext = null;
private ClientCredential clientCredential = null;

public MainWindow()
{
InitializeComponent();
authContext = new AuthenticationContext(authority);
clientCredential = new ClientCredential(clientId, appKey);
CheckForCachedToken();
}

public async void GetToken()
{
AuthenticationResult result = null;
try
{
    UserCredential uc = new UserCredential("username", "password");
    result = await authContext.AcquireTokenAsync(graphResourceId, clientId, uc);
}
catch (AdalException ex)
{
    if (ex.ErrorCode != "user_interaction_required")
    {
        MessageBox.Show(ex.Message);
    }
    return;
 }
 }

Но когда я обновил решение до .Net Core, это нарушило класс .ie UserPasswordCredential, который не поддерживается в ядре .NET.Есть ли обходной путь для этого?

1 Ответ

0 голосов
/ 16 ноября 2018

В ядре dot net это не поддерживается Design.Жесткое кодирование имени пользователя и пароля не рекомендуется для аутентификации в Azure AD.В большинстве случаев вход в систему происходит через login.live.com или, если вы используете других провайдеров идентификации, таких как Google, Facebook и т. Д., Это будет их страница входа.

Похоже, что вы используете приложение для Windows, вы можете проверить опции для него.

Образцы для различных опций аутентификации доступны для справки.

Поток аутентификации на основе токенов - хороший способ сделать это.Весь смысл отказа от опции username / password заключается в том, что если ваше приложение обрабатывает имя пользователя или пароль каким-либо образом, это небезопасно.Вот почему на это лежит ответственность поставщика удостоверений.Если вы не хотите делать это, вы можете выбрать опцию «Только приложение» Требуется ли браузер для аутентификации Onedrive / Graph

Вы также можете проверить, используется ли Microsoft Аутентификатор приложение является опцией.Но это главным образом для добавления аутентификации второго фактора в ваши мобильные приложения.

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