Настройте токен доступа JWT в приложении .NET core 2 MVC - PullRequest
0 голосов
/ 02 ноября 2018

Мне удалось получить токен авторизации из Azure Active Directory в консольном приложении. Я хочу преобразовать этот код в .Net Core MVC, но не уверен, как правильно все настроить в Startup.cs

Я предполагаю, что пары ключ / значение будут перемещены в appsettings.json, но как мне получить этот токен в ConfigureServices()?

    var client = new HttpClient();

    var uri = "https://login.microsoftonline.com/<tenantid>/oauth2/token";

    var pairs = new List<KeyValuePair<string, string>>
    {
        new KeyValuePair<string, string>("resource", "{resourceID}"),
        new KeyValuePair<string, string>("client_id", "{clientID}"),
        new KeyValuePair<string, string>("client_secret", "{clientSecret}"),
        new KeyValuePair<string, string>("grant_type", "client_credentials"),
        new KeyValuePair<string, string>("scope", "openid")
     };

    var content = new FormUrlEncodedContent(pairs);
    var response = client.PostAsync(uri, content).Result;

    string result = string.Empty;

    if (response.IsSuccessStatusCode)
    {
        result = response.Content.ReadAsStringAsync().Result;
        JObject jObject = JObject.Parse(result);
        string token = (string)jObject.SelectToken("access_token");
    }

Должен ли я использовать один из следующих способов для получения токена на предъявителя? Я делаю POST в консольном приложении, но это не подходит для конфигурации запуска.

services.AddAuthentication() 

или

.AddJwtBearer()

Ответы [ 2 ]

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

Вместо этого вы можете использовать класс запуска OWIN. См. Этот пример от Microsoft

https://docs.microsoft.com/en-us/azure/active-directory/develop/quickstart-v1-aspnet-webapp

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

Я получил его для запуска и аутентификации, но он не предоставляет токен аутентификации.

Как сказала Жан, вы можете использовать Microsoft Authentication Library (MSAL), которая является библиотекой, которая помогает вам разрабатывать приложения, работающие с конечной точкой v2.0, и здесь вы можете использовать ее для получения токена доступа.

Область действия - это ресурс, к которому вы хотите добавить .default. См. Эту статью .

Значение, передаваемое параметру области в этом запросе, должно быть идентификатором ресурса (URI идентификатора приложения) требуемого ресурса с добавлением суффикса .default. Для примера Microsoft Graph это значение равно https://graph.microsoft.com/.default. Это значение информирует конечную точку v2.0 о том, что из всех прямых разрешений приложения, которые вы настроили для своего приложения, оно должно выдать токен для тех, которые связаны с ресурсом, который вы хотите использовать.

Ниже приведен пример кода C # MSAL, который получает маркер доступа для сценария разрешения этого приложения. Вам необходимо установить пакет NuGet Microsoft.Identity.Client в вашем проекте.

ConfidentialClientApplication app = new ConfidentialClientApplication("clientId",
    "https://login.microsoftonline.com/tenantId/v2.0",
    "redirectUrl",
    new ClientCredential("clientSecret"),
    new TokenCache(),null);
AuthenticationResult authResult = app.AcquireTokenForClientAsync(
    new string[] { "https://graph.microsoft.com/.default"}).Result;
var token = authResult.AccessToken;

Здесь вы можете изменить Microsoft Graph API на свой API Application ID URI, а для получения дополнительной информации о разрешении на добавление и т. Д. Вы можете обратиться к этой статье .

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