Saya memiliki aplikasi Web API yang terdaftar di AAD perusahaan saya. Ini adalah aplikasi multi-penyewa yang mampu menanyakan AAD pelanggan yang berlangganan. Ketika pelanggan berlangganan layanan kami, mereka mendaftarkan aplikasi kami di bagian pendaftaran Aplikasi Perusahaan AAD mereka dan memberi kami tenantId, clientId, dan clientSecret. Kami kemudian menggunakan parameter ini untuk menanyakan AAD pelanggan.

Saya menggunakan yang berikut ini untuk membaca grup dari Azure AD pelanggan:

    public async Task<GraphServiceClient> CreateGraphServiceClient(string tenantId, string clientId, string clientSecret)
    {
        string aadInstance = "https://login.microsoftonline.com/{0}";
        string resource = "https://graph.microsoft.com";
        string authority = string.Format(aadInstance, tenantId);

        AuthenticationContext authContext = new AuthenticationContext(authority);
        ClientCredential credentials = new ClientCredential(clientId, clientSecret);
        var authResult = await authContext.AcquireTokenAsync(resource, credentials);
        if(authResult == null)
        {
            throw new Exception("GetGraphServiceClient: AcquireTokenAsync failed!");
        }

        var accessToken = authResult.AccessToken;
        var graphServiceClient = new GraphServiceClient(
            new DelegateAuthenticationProvider(
                requestMessageClientOtherTenant =>
                {
                    requestMessageClientOtherTenant.Headers.Authorization = new AuthenticationHeaderValue("bearer", accessToken);
                    return Task.FromResult(0);
                }));

        return graphServiceClient;
    }

//....
        var graphServiceClient = CreateGraphClient(tenantId, clientId, clientSecret);

        var graphGroupsPage = await graphServiceClient.Groups
            .Request()
            .Select(e => new {
                e.Id,
                e.DisplayName
            })
            .GetAsync();

Saya mendapatkan kesalahan 'Hak istimewa tidak mencukupi untuk menyelesaikan operasi'.

Saya telah melihat cukup banyak solusi online yang berusia 2-3 tahun tetapi tidak ada yang berhasil untuk saya.

Izin yang diberikan ke aplikasi di bagian "Aplikasi perusahaan" pelanggan : masukkan deskripsi gambar di sini azure azure-active-directory adal msal

0
gordieb 18 April 2020, 01:31

1 menjawab

Jawaban Terbaik

Ketika pelanggan berlangganan layanan kami, mereka mendaftarkan aplikasi kami di bagian pendaftaran Aplikasi Perusahaan AAD mereka dan memberi kami tenantId, clientId, dan clientSecret. Kami kemudian menggunakan parameter ini untuk menanyakan AAD pelanggan.

Karena pelanggan Anda telah memberikan aplikasi multi-penyewa Anda untuk mengakses informasi penyewa mereka, hanya tennantId pelanggan yang diperlukan, Anda harus menggunakan clientId dan clientSecret aplikasi multi-penyewa Anda sendiri untuk mengakses IKLAN.

Jika Anda menggunakan client_id dan rahasia pelanggan, Anda harus memeriksa izin di bawah aplikasi mereka (bukan aplikasi perusahaan), tetapi, ini tidak masuk akal. Jika demikian, tidak perlu menggunakan aplikasi multi-tenant Anda.

1
Tony Ju 20 April 2020, 02:50