Azure получает список EID с помощью API

В настоящее время я работаю над проектом, в котором мне нужно получить список пользователей EID от нашего клиента с помощью API Azure. Может ли кто-нибудь подсказать мне, как этого добиться?

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

Заранее спасибо за вашу помощь!

  • Регистрация приложений
  • Создание секретов клиента
  • Создать лямбда-функцию
import os
import json
import requests
from azure.identity import ClientSecretCredential

def lambda_handler(event, context):
    tenant_id = os.environ['AZURE_TENANT_ID']
    client_id = os.environ['AZURE_CLIENT_ID']
    client_secret = os.environ['AZURE_CLIENT_SECRET']

    credential = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
    token = credential.get_token("https://graph.microsoft.com/.default").token
    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }
    response = requests.get('https://graph.microsoft.com/v1.0/users', headers=headers)
    if response.status_code == 200:
        users = response.json()
        return {
            'statusCode': 200,
            'body': json.dumps(users)
        }
    else:
        return {
            'statusCode': response.status_code,
            'body': json.dumps({'error': 'Failed to fetch users'})
        }

я могу получить

{
  "statusCode": 403,
  "body": "{\"error\": \"Failed to fetch users\"}"
}

Можете ли вы включить дополнительную информацию о том, что вы пробовали?

Rukmini 27.06.2024 09:26

@Рукмини Конечно! Я добавил свою пробную версию в вопрос!

jmcunst 27.06.2024 09:40

Проверьте мой ответ ниже, вам нужно предоставить разрешение API приложения User.Read.All и изменить код для печати json.

Rukmini 27.06.2024 09:48
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
4
67
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Чтобы составить список пользователей Microsoft Entra ID, вам необходимо предоставить разрешение API приложения User.Read.All:

И используйте приведенный ниже код Python:

import os
import json
import requests
from azure.identity import ClientSecretCredential

def lambda_handler(event, context):
    tenant_id = 'TenantID'
    client_id = 'ClientID'
    client_secret = 'ClientSecret'

    credential = ClientSecretCredential(tenant_id=tenant_id, client_id=client_id, client_secret=client_secret)
    token = credential.get_token("https://graph.microsoft.com/.default").token
    headers = {
        'Authorization': 'Bearer ' + token,
        'Content-Type': 'application/json'
    }
    response = requests.get('https://graph.microsoft.com/v1.0/users', headers=headers)
    if response.status_code == 200:
        users = response.json()
        return {
            'statusCode': 200,
            'body': json.dumps(users)
        }
    else:
        return {
            'statusCode': response.status_code,
            'body': json.dumps({'error': 'Failed to fetch users'})
        }


if __name__ == "__main__":
    
    result = lambda_handler(None, None)  
    if result['statusCode'] == 200:
        users_data = json.loads(result['body'])
        print(json.dumps(users_data, indent=2))  
        print("Press any key to continue . . .") 
    else:
        print("Failed to fetch users:", result['body'])  

Рад, что смог помочь

Rukmini 28.06.2024 05:09

Другие вопросы по теме

AddDataProtection().PersistKeysToAzureBlobStorage().ProtectKeysWithAzureKeyVault() получает ошибку httpVerb при доступе к хранилищу BLOB-объектов
Развертывание веб-приложения Python (Dash) в Azure, конвейер работает слишком долго, а колесо создания сообщений для панд все еще работает. Как оптимизировать?
Синхронизация файлов Azure с хранилищем BLOB-объектов
Создание NewPageIterator для выполнения поискового запроса с использованием Microsoft Graph SDK для Go
Можно ли получить доступ к конфигурации приложений Azure через URL-адрес или каким-либо образом подключиться к настройке среды службы приложений?
Последовательно запускать приложение логики из служебной шины Azure
Azure Loadbalancer с пересылкой трафика по общедоступному IP-адресу в приложения-контейнеры
Можно ли изменить отображаемое имя адреса MailFrom службы связи Azure?
Cosmos db отключить локальную аутентификацию для nosql с помощью terraform
Ошибка SubscriptionNotFound Azure CLI, несмотря на правильную подписку и роль владельца

Похожие вопросы

Превратите список кортежей в фрейм данных pandas с одним столбцом
Pandas сжимает строки, когда данные отсутствуют
Передача переменных конфигурации в функции, чтобы они вели себя как константы времени компиляции
Когда я запускаю поэтическую оболочку на MacOS с оболочкой ZSH, выдает ошибку «команда не найдена»
Развертывание веб-приложения Python (Dash) в Azure, конвейер работает слишком долго, а колесо создания сообщений для панд все еще работает. Как оптимизировать?
Как мне заставить селен последовательно находить и использовать элемент при создании викторины Kahoot?
Как извлечь подстроки непосредственно перед ближайшим знаком препинания?
Используя Postgres/Flask, как я могу запросить следующее появление запланированной задачи, когда дни/часы/минуты хранятся как целые числа в своих собственных столбцах?
Добавление ведущих нулей в столбцы данных при загрузке из файлов CSV с помощью pandas
Используйте Python для управления форматом json.dump() с помощью kwarg "default="?