Я пытаюсь создать приложение в Azure AD программно. Я добавил начальное приложение в портал управления и предоставил разрешения для Graph Api и Active Directory (Directory read/write в обоих).Получение «Service_InternalServerError» при создании приложения через Graph API в Azure AD
Сначала я получить код авторизации, формирование выборки URL ниже:
uri = Addressable::URI.parse('https://login.microsoftonline.com/common/oauth2/authorize')
uri.query_values = {
response_type: 'code',
response_mode: 'form_post',
client_id: <Application ID>,
redirect_uri: <Redirect URI>,
resource: 'https://graph.windows.net/',
state: <UUID>,
}
После этого я получаю токен аутентификации по сильфону запроса:
client = OAuth2::Client.new(client_id,
client_secret,
:site => 'https://login.microsoftonline.com',
:authorize_url => '/common/oauth2/authorize',
:token_url => '/common/oauth2/token')
auth_token = client.auth_code.get_token(auth_code,
:redirect_uri => redirect_uri,
:scope => 'openid'
Наконец я могу сделать график апите вызов для приложений конечных точек для добавления приложения:
graph_url = 'https://graph.windows.net/<TENANT ID>/applications?api-version=1.6'
body = {
'identifierUris' => ['<URI>'],
'availableToOtherTenants' => true,
'homepage' => <Home PAGE>,
'replyURLs' => <SOME REPLY URL>,
'displayName' => <APP DISPLAY NAME>,
}
headers = {'Content-Type' => 'application/json','Authorization' => "Bearer #{auth_token.token}"}
conn = Faraday.new(graph_url, {headers: headers})
res = conn.post graph_url, body.to_json
В ответ я получаю следующее сообщение об ошибке h не очень описателен и не уверен, что не так:
{"odata.error"=>{"code"=>"Service_InternalServerError", "message"=>{"lang"=>"en", "value"=>"Encountered an internal server error."}}}
Любые предложения приветствуются.
Рад, что вы были в состоянии решить эту проблему. В прошлом я нашел, что очень простой способ избежать таких проблем - сначала сделать «GET» на аналогичном объекте, а затем изменить этот объект, чтобы он содержал нужные вам новые свойства, а затем использовать его для вашего POST. Например, я создам приложение с помощью Azure Portal, а затем с помощью этого приложения создам новые приложения в своем POST-запросе. Другим советом может быть использование Fiddler для захвата HTTP-трафика PowerShell или другой службы, которая может создавать приложения с использованием графика, а затем использовать их для создания вашего тела. –
Спасибо за подсказку, запомните это на будущее! – natia