Можно ли разрешить приложению в общедоступном облаке получать данные от государственного арендатора с помощью графического API?

Я пытаюсь получить список адресов электронной почты от государственного арендатора через графический интерфейс, и до прошлой недели он работал нормально. Я использую поток учетных данных клиента. На прошлой неделе я начал получать следующую ошибку при попытке авторизовать мое приложение в государственных арендаторах:

oauthlib.oauth2.rfc6749.errors.InvalidClientIdError: (invalid_request) AADSTS900441: Requests to applications hosted in the public cloud are not supported for USGov tenants.

Есть ли способ авторизовать приложение из общедоступного лазурного облака для чтения данных от государственного арендатора?

РЕДАКТИРОВАТЬ: пример кода и журналы отладки

    from oauthlib.oauth2 import BackendApplicationClient
    
    client = BackendApplicationClient(client_id=config.CLIENT_ID)
    MSGRAPH = requests_oauthlib.OAuth2Session(
        client=client
    )
    
    token = MSGRAPH.fetch_token(
        'https://login.microsoftonline.us' + '/<tenant>' + config.TOKEN_ENDPOINT,
        client_id=config.CLIENT_ID,
        client_secret=config.CLIENT_SECRET,
        include_client_id=True,
        scope=['https://graph.microsoft.us/.default'])

    endpoint = config.RESOURCE + config.API_VERSION + '/users'
    graphdata = MSGRAPH.get(endpoint).json()
DEBUG:requests_oauthlib.oauth2_session:Requesting url https://login.microsoftonline.us/<tenant-id>/oauth2/v2.0/token using method POST.
DEBUG:requests_oauthlib.oauth2_session:Supplying headers {u'Content-Type': u'application/x-www-form-urlencoded;charset=UTF-8', u'Accept': u'application/json'} and data {u'client_secret': u'...', u'grant_type': u'client_credentials', u'client_id': u'...', u'scope': u'https://graph.microsoft.us/.default'}
DEBUG:requests_oauthlib.oauth2_session:Passing through key word arguments {'verify': True, 'json': None, 'proxies': None, 'timeout': None, 'auth': None}.
DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): login.microsoftonline.us:443
DEBUG:urllib3.connectionpool:https://login.microsoftonline.us:443 "POST /<tenant-id>/oauth2/v2.0/token HTTP/1.1" 400 522
DEBUG:requests_oauthlib.oauth2_session:Prepared fetch token request body grant_type=client_credentials&client_id=...&client_secret=...&scope=https%3A%2F%2Fgraph.microsoft.us%2F.default
DEBUG:requests_oauthlib.oauth2_session:Request to fetch token completed with status 400.

Обычно я вижу эту ошибку, когда пытаюсь получить токен доступа. Согласие администратора уже было предоставлено моему приложению администратором клиента. Этот код работал у правительственных арендаторов около месяца и внезапно перестал работать.


person Novarg    schedule 06.10.2020    source источник
comment
В общем, вы можете получить информацию в правительственном клиенте, если у вас есть подходящая авторизация. Но можете ли вы поделиться кодом, который вы используете в настоящее время, который вызывает это сообщение об ошибке.   -  person Steve Michelotti    schedule 08.10.2020
comment
@SteveMichelotti: да, я мог получать информацию около месяца, но внезапно она перестала работать несколько дней назад. Пожалуйста, проверьте мое пост-обновление с образцом кода и журналом отладки.   -  person Novarg    schedule 08.10.2020


Ответы (1)


AAD начал применять это около месяца назад, клиенты GCC High / DoD не могут использовать конфиденциальные приложения, опубликованные в коммерческом облаке. Вам необходимо опубликовать свое приложение из клиента GCC High / DoD.

person Nagdeep    schedule 12.10.2020
comment
что здесь означает «конфиденциальные приложения»? Также знаете ли вы, нужно ли публиковать приложение для каждого арендатора Gov? Необходимо ли для поддержки нескольких клиентов Gov публиковать несколько приложений, по одному для каждого клиента? - person Nick Baker; 05.12.2020