Неверное доменное имя Azure Проблема с активным каталогом и миграция в приложение Microsoft Graph C# - PullRequest
0 голосов
/ 18 февраля 2020

Я пытаюсь запустить приведенный ниже код, чтобы получить данные пользователя в ответ от Azure Active Directory:

using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

namespace AADConsole2
{
    class Program
    {

        private const string aadInstance = "https://login.microsoftonline.com/{0}";
        private const string resource= "https://graph.windows.net";
        private const string GraphServiceObjectId = "XXX";
        private const string TenantId = "XXXXX";
        private const string tenant = "company.onmicrosoft.com";
        private const string ClientId = "XXXX";
        private static string appKey= "XXXXXXXXXXXXXXXX";
        static string authority = String.Format(System.Globalization.CultureInfo.InvariantCulture, aadInstance, tenant);

        private static HttpClient httpclient = new HttpClient();
        private static AuthenticationContext context = null;
        private static ClientCredential credential = null;

        static void Main(string[] args)
        {

            context = new AuthenticationContext(authority);
            credential = new ClientCredential(ClientId, appKey);
            Task<string> token = GetToken();
            token.Wait();
            Console.WriteLine(token.Result);
            Task<string> users = GetUsers(token.Result);
            users.Wait();
            Console.WriteLine(users.Result);
            Console.ReadLine();
        }

        private static async Task<string> GetUsers(string result) {
            //throw new NotImplementedException();
            string users = null;
            string queryString = "test";

var uri = "https://graph.windows.net/ {your_tenant_name}. onmicrosoft.com/users?api-version=1.6" ;

            httpclient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", result);
            var getResult = await httpclient.GetAsync(uri);

            if(getResult.Content != null)
            {
                users = await getResult.Content.ReadAsStringAsync();

            }
            return users;

        }


        private static async Task<string> GetToken()
        {
            AuthenticationResult result = null;
            string token = null;
            result = await context.AcquireTokenAsync(resource, credential);
            token = result.AccessToken;
            return token;



        }
    }
}

Я получаю сообщение об ошибке ниже:

uMCJ9.FdttazjoKYZWP_SmC5B7Nd3kOF-jRs62WLKYovDA8qMvybLTw8yIUoihp7I00ctJGJHDoEbhbIi0XHp9Ujdq0bNPlG-L5SoE9IFSoxX3ZQOZwSf90b_nDapbHJ8KCHZUnCBOwVnYiTXtpIQfrDVqqENarrIGa_uUbiriomYiB8gVkKWe6PB-I4lsYPEmMNnnpdvIf1eV_CsTmvUA54Ch1Zdip9mxrzRqrUqsx6vUTo0riCmiCxRg7mH2DuMaEPTZuQAMwhrQM_EwNsgx1yX1VsCKkL1Gu7CV_dqW5xxYlE7NEQmorT8W6aySbiBzsUWisJNnaR8RqZzeAUlSVMKBiw
{"odata.error":{"code":"Request_BadRequest","message":{"lang":"en","value":"Invalid domain name in the request url."},"requestId":"01ab745b-8a3f-48cc-9542-0c6abcae8950","date":"2020-02-17T22:41:28"}}
r

Кроме того, помогите мне получить имя арендатора (это имя или alphanumeri c id?), В настоящее время я просто использую под именем арендатора. private const string tenant = "company.onmicrosoft.com";

Я хочу использовать только Microsoft Graph API в этом коде. Спасибо.

1 Ответ

2 голосов
/ 18 февраля 2020

Я также хочу знать, использует ли этот код Microsoft Graph или Azure AD.

Этот код использует Azure API Graph API. Он работает нормально, если URI запроса верен. Вы должны использовать свое имя арендатора, а не company.onmicrosoft.com, и вы должны указать api-версию. Таким образом, uri запроса должен быть

var uri = "https://graph.windows.net/{your_tenant_name}.onmicrosoft.com/users?api-version=1.6"; 

Если имя арендатора неверно, вы столкнетесь с ошибкой неверного имени домена.

Я не уверен, стоит ли использовать https://graph.microsoft.com или https://graph.windows.net.

Вы можете использовать любой из них. Но официальный документ настоятельно рекомендует использовать Microsoft Graph вместо Azure AD Graph API для доступа к Azure Active Directory (Azure AD) ресурсам .

Если вы хотите использовать Microsoft Graph API, просто измените значение ресурса и запросите api url. Ресурс будет https://graph.microsoft.com. URL-адрес запроса будет var uri = "https://graph.microsoft.com/v1.0/users";.

Примечание: Не забудьте предоставить вашему приложению правильные разрешения на портале Azure и дать согласие администратора.

enter image description here

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