【发布时间】:2019-08-03 13:21:00
【问题描述】:
作为一个练习,我一直在尝试创建一个可以调用 Azure 管理 API 的 swagger 配置,并从在线 swagger 编辑器中运行它。
我已将其配置为使用隐式身份验证,它几乎可以工作,但我无法让 Azure 框架将 swagger 编辑器识别为有效的重定向 URL。
这是我采取的所有步骤。谁能发现我做错了什么?
使用 Azure AD 门户,我创建了一个新的 Azure AD 应用程序
在申请注册的回复网址中,我添加了https://editor.swagger.io/oauth2-redirect.html
我在 Swagger 2.0 文档中创建了以下安全条目:
securityDefinitions:
azureTokenAuthentication:
flow: implicit
authorizationUrl: https://login.microsoft.com/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/oauth2/authorize
scopes:
https://management.azure.com: Accessing the Azure API
type: oauth2
security:
- azureTokenAuthentication:
- https://management.azure.com
(编辑后的 GUID 是我的租户 ID)。
现在,当我点击“授权”按钮时,swagger 会为我打开一个对话框:
所以我输入应用程序 ID 并单击授权。然后它会将我发送到带有以下参数的登录 URL:
- response_type:令牌
- client_id:eb482fb2-8229-434e-b5a6-9fc3e0f06968
-
redirect_uri:
https://editor.swagger.io/oauth2-redirect.html -
范围:
https://management.azure.com -
状态:
Wed Mar 13 2019 09:16:06 GMT+1000 (Australian Eastern Standard Time)
请注意,redirect uri 与我在应用注册中输入的值匹配。
所以我输入我的用户名和密码,然后 URL 被重定向到以下内容:
https://login.live.com/err.srf?lc=1033#error=invalid_request&error_description=The+provided+value+for+the+input+parameter+'redirect_uri'+is+not+valid.+The+expected+value+is+a+URI+which+matches+a+redirect+URI+registered+for+this+client+application.&state=rQIIAdNiNtQztFJJTTKxMEpLMtK1MDKy1DUxNknVTTJNNNO1TEs2TjVIMzCzNLMoEuISWF1yo3vvud0Ozb9b9Z66bQ-cxcgZn5NZlqqXnJ-7ilEvo6SkoNhKXz81JbMkv0ivuDwxPT21SC8zXz8_sbQkw0i3CChTlJpcAlSZm7ODkfECI-MLRsZbTPz-jiB5EJFflFmVOos5JswoLNvT1TAjOdOxwrfSsdLXxdXU08XR1D_L1cg_y9HI0zXFL8y5uMLXxbHc0znDKSXCzyA51604Mdyt1NM1LCPZOCgnOdckPdQ4KCMpNygjOTcwPcw9pyQqONt2E7NKSqqpuZGhmZGuabJ5iq6JRVqSrmWSqaGuubmlabKpeaKZqWXyKWYZmI9yE_MS01NzU_NK9BKrSovAHr7BzHiBhfEVC48BsxUHB5cAgwSDAsMPFsZFrMCQmrTR22we8wzHyc1Bd633_2M4xapfku7mkeJk5qxfkpOb7lcUXB5SmOZb7Jef7l-c526UmVUQqV_q5Zzh4uzma2tkZTiBTeYDG2MHO8MuThID9haXiJGBoaWugbGuoZGCkbGVoZmVgXkUAA2
我从中收集到的有趣文字是:
为输入参数“redirect_uri”提供的值无效。预期值是一个 URI,它与为此客户端应用程序注册的重定向 URI 匹配。
但它确实匹配!我做错了什么?!?
【问题讨论】:
-
从您的帖子中,您使用了错误的授权 URL,正确的应该是:
https://login.microsoftonline.com/your-tenant-name/oauth2/authorize?。 -
@SunnySun - 我的错误,我正确使用了 TenantID,而不是订阅 ID。我会解决我的问题。 (我希望它是那样的愚蠢:-)
标签: azure-active-directory swagger swagger-ui