#azure #powershell #auth0 #azure-pipelines-yaml
Вопрос:
Я пытаюсь автоматизировать шаг в нашем конвейере Azure yaml для удаления некоторых пользователей из Auth0 с помощью PowerShell и RestMethod, но по какой-то причине секрет либо используется неправильно, либо изменен, либо что-то в этом роде.
Я установил секрет в качестве переменной, а затем попытался использовать его либо непосредственно в скрипте, либо установив его в задаче, а также в переменной среды, но безуспешно.
Вот моя последняя итерация, но все еще без радости, может ли кто-нибудь пролить свет на этот вопрос?
$api = "api/v2/"
$audience = $audience $api
$secret = "$env:AUTH0_CLIENT_SECRET"
$test = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes($secret))
Write-Host $clientSecret.substring(0,10)
Write-Host $test.substring(0,10)
Write-Host $audience
Write-Host $clientId
$Body = @{
client_id = $clientId
client_secret = $test OR $secret OR $clientSecret
audience = $audience
grant_type = "client_credentials"
}
Write-Host 'Getting token'
$response = Invoke-RestMethod https://mytenant.eu.auth0.com/oauth/token `
-Method 'POST' `
-ContentType 'application/json; charset=utf-8' `
-Body ($Body | ConvertTo-Json)
Как показано, я пытался использовать test, secret и clientSecret в качестве секрета, но также безуспешно. Узел записи в начале показывает правильные начальные символы для $clientSecret
Я упускаю что-то основное или это просто невозможно с помощью метода RestMethod?
Комментарии:
1. На мой взгляд, это скорее проблема OAuth2.0. Вы уверены, что его там
https://mytenant.eu.auth0.com/oauth2/token
нет? Или, может быть, вам нужно установитьscope
?2. Когда я запускаю этот код локально и передаю секрет в качестве параметра, он работает идеально, просто в конвейере yaml он неправильно обрабатывает секрет
Ответ №1:
В итоге я оказался на выжженной земле, полностью удалил конвейеры и начал снова, это сценарий powershell, который у меня получился, который сработал.
$token = "/oauth/token"
$https = "https://"
$api = "/api/v2/"
$audience = $https $domain $api
$tokenUrl = $https $domain $token
Write-Host 'Getting token'
$response = Invoke-RestMethod $tokenUrl `
-Method 'POST' `
-ContentType 'application/json; charset=utf-8' `
-Body (@{
client_id = $clientId
client_secret = "$env:AUTH0_CLIENT_SECRET"
audience = $audience
grant_type = "client_credentials"
} | ConvertTo-Json)