我正在编写一种passwd
命令行应用程序来更改Azure帐户的密码。像这样工作的东西:
> passwd someuser Passw*rd1
阅读所有文档之后,我已在Azure门户中创建了具有所有所需权限的应用程序,并且即将在获得访问令牌之前获得应用程序授权。
问题不是获得授权码,而是https://login.microsoftonline.com/<tenantName>/oauth2/v2.0/authorize
的调用返回给我的是HTML页面。
据我了解,该页面应该为登录用户提供委派所需权限的机会,但这是管理员用户要使用的命令。实际上,目前没有登录用户。
我想念什么?
您在哪里叫/authorize
端点?
您可以在浏览器中这样调用并使用您的帐户登录:
https://login.microsoftonline.com/{tenant}/oauth2/v2.0/authorize?
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&response_type=code
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&response_mode=query
&scope=openid%20offline_access%20https%3A%2F%2Fgraph.microsoft.com%2Fuser.read
&state=12345
然后您将在地址栏中看到一个“代码”。使用此代码来请求访问令牌:
POST /{tenant}/oauth2/v2.0/token HTTP/1.1
client_id=6731de76-14a6-49ae-97bc-6eba6914391e
&scope=https%3A%2F%2Fgraph.microsoft.com%2Fuser.read
&code=OAAABAAAAiL9Kn2Z27UubvWFPbm0gLWQJVzCTE9UkP3pSx1aXxUjq3n8b2JRLk4OxVXr...
&redirect_uri=http%3A%2F%2Flocalhost%2Fmyapp%2F
&grant_type=authorization_code
&client_secret=JqQX2PNo9bpM0uEihUPzyrh
查看Request an authorization code和Request an access token的详细信息。