我有一个受Azure AD保护的Web api。 我的javascript发送了一个回调URL,其中用户访问令牌被发送到了
https://login.microsoftonline.com/{my_tenant}/oauth2/v2.0/token/?redirect_uri={my_url}&...
现在,我想使用Powershell访问我的api,因此,我希望仅将令牌作为响应。我已经使用下面的代码尝试过此resource owner password credential-flow,但它只是说用户名或密码不正确...(我使用相同的手动登录名)
$creds = @{
client_id = $clientId
username = $username
password = $password
grant_type = "password"
scope="User.Read"
}
$headers = @{
"Content-Type"="application/x-www-form-urlencoded"
}
Invoke-RestMethod $authUrl -Method Post -Body $creds -Headers $headers;
因此,简而言之,我想使用Powershell使用用户名和密码登录,可以吗?
答案 0 :(得分:1)
我无法重现您的问题,请仔细检查您的用户名和密码。
或者您可以尝试我的工作示例,并且如果您想从自己的api获取脚趾,则scope
应该是{Application ID URI or Application ID}/User.Read
,如果您使用scope="User.Read"
,则它表示默认情况下为MS Graph API。
示例:
$authUrl = "https://login.microsoftonline.com/{tenant-id}/oauth2/v2.0/token/"
$clientId = "xxxxxxxxxxxxxxxxxxx"
$username = "xxxxxx@xxx.onmicrosoft.com"
$password = "xxxxxx"
$creds = @{
client_id = $clientId
username = $username
password = $password
grant_type = "password"
scope="{Application ID URI or Application ID}/User.Read"
}
$headers = @{
"Content-Type"="application/x-www-form-urlencoded"
}
Invoke-RestMethod $authUrl -Method Post -Body $creds -Headers $headers
更新:
使用资源所有者密码凭据流时,请注意以下重要事项。