Invoke-RestMethod для приложения, требующего аутентификации Azure

@ sage444 ваш ответ - это то, что я ищу в течение нескольких часов. Работает как шарм.

Я просто предоставляю версию Swift для будущих читателей:

let predicate = NSPredicate(format: "%K.stringValue CONTAINS[c] %@",
                            #keyPath(YOUR_MODEL.number),
                            substring)
0
задан Sage Pourpre 6 March 2019 в 14:57
поделиться

3 ответа

Согласно вашему сценарию, вы должны указать свой заголовок как Headers @{Authorization = "Bearer "+ $TokenResult.access_token}. Есть образец, который я использую.

$Params = @{
    'client_id' = '' 
    'redirect_URI' = ''
    'response_type'='code'
    'scope' = 'https://graph.microsoft.com/.default offline_access'
}
$ClientSecret ='.C$S|NAYQ:q)ES2w(A)*]Xp5T-?Fx+[aKE+YtmcaX!u1!{>T*wVJ70h:Q2s'
$TeantID = 'e4c9ab4e-bd27-40d5-8459-230ba2a757fb'
$Query = "?"; $Params.Keys | % {$Query+= "$(

Согласно вашему сценарию, вы должны указать свой заголовок как Headers @{Authorization = "Bearer "+ $TokenResult.access_token}. Есть образец, который я использую.

[110]

Подробнее см. На https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow

)=$($Params.Item(

Согласно вашему сценарию, вы должны указать свой заголовок как Headers @{Authorization = "Bearer "+ $TokenResult.access_token}. Есть образец, который я использую.

[110]

Подробнее см. На https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow

))&"} ; $Query = $Query.TrimEnd('&') $IE= new-object -ComObject "InternetExplorer.Application" $IE.Visible = $true $IE.navigate2("https://login.microsoftonline.com/$($TeantID)/oauth2/authorize$Query") Write-Host 'Press enter when Code is displayed in URL' pause Add-Type -AssemblyName System.Web $Code = [System.Web.HttpUtility]::ParseQueryString(([uri]$ie.LocationURL).Query)['code'] $ie.quit() $TokenResult = Invoke-RestMethod -Method Post -ContentType 'application/x-www-form-urlencoded' -Uri "https://login.microsoftonline.com/$($TeantID)/oauth2/v2.0/token" -Body @{ client_id = $Params.client_id scope = 'User.Read offline_access' code = $Code redirect_uri = $Params.Redirect_URI grant_type = 'authorization_code' client_secret = $ClientSecret } Invoke-RestMethod -Method Get -Uri 'https://graph.microsoft.com/v1.0/me' -Headers @{Authorization = "Bearer "+ $TokenResult.access_token}

Подробнее см. На https://docs.microsoft.com/en-us/azure/active-directory/develop/v2-oauth2-auth-code-flow

0
ответ дан Jim 6 March 2019 в 14:57
поделиться

Если вы хотите назвать свой пользовательский API, вам нужно указать свою область действия. Пожалуйста, добавьте свою собственную область API в значение своей области, когда получите токен доступа. Для более подробной информации вы можете обратиться к этому образцу . enter image description here

0
ответ дан Jim 6 March 2019 в 14:57
поделиться

Я полагаю, вы не настроили свой API в AAD. Чтобы получить доступ к API через приложение AD, вам также необходимо создать приложение AD для вашего API на портале, см. Зарегистрируйте приложение с помощью конечной точки Azure Active Directory v2.0. и настройте его для предоставления API, см .: Настройте приложение для предоставления веб-API (предварительный просмотр) и Настройте клиентское приложение для доступа к веб-API (предварительный просмотр) . После этого вы сможете вызывать API-интерфейсы, такие как Graph API, API Office 365 и т. Д.

Вы можете разработать веб-API и сделать его доступным для клиентских приложений, указав разрешения / области действия и роли. Правильно настроенный веб-API доступен так же, как и другие веб-API Microsoft, включая Graph API и API Office 365.

0
ответ дан Joy Wang 6 March 2019 в 14:57
поделиться
Другие вопросы по тегам:

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