作为练习,我一直在尝试创建一个可以调用Azure Management API的swagger配置,并从在线swagger编辑器运行它。
我已将其配置为使用隐式身份验证,它几乎可以正常工作,但我无法让Azure Framework将swagger编辑器识别为有效的重定向URL。
这是我采取的所有步骤。谁能发现我做错了什么?
使用Azure AD门户,我创建了一个新的Azure AD应用程序
在应用程序注册的回复URL中,我添加了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:
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.microsoft.com/<tenant-id>/oauth2/authorize
更改为https://login.microsoft.com/<tenant-id>/oauth2/v2.0/authorize
然后我不得不关注these instructions,并直接修改应用程序清单以允许隐式流程:
然后我改变了范围。我无法让management.azure.com
运行,但我可以通过将https://graph.windows.net
附加到范围来获得/.default
。 (https://graph.windows.net/.default
)。
这让我又向前迈了一步。现在它重定向到授权URL,Microsoft验证了我,为我生成了一个令牌,并将我的浏览器重定向到https://editor.swagger.io/oauth2-redirect.html
然后我被挫败了,当我意识到editor.swagger.io
实际上没有处理它重定向浏览器的路径。 (文件outh2-redirect.html
存在于GitHub上:https://github.com/swagger-api/swagger-ui/blob/master/dist/oauth2-redirect.html)
那是我放弃的时候。
回复url =“你的web api的swagger page url”与“/oauth2-redirect.html”连接
例如:https://localhost:44329/swagger/oauth2-redirect.html
为应用程序注册中的每个环境配置包括localhost。