使用Swagger UI获取AzureAD隐式流

问题描述 投票:0回答:2

作为练习,我一直在尝试创建一个可以调用Azure Management API的swagger配置,并从在线swagger编辑器运行它。

我已将其配置为使用隐式身份验证,它几乎可以正常工作,但我无法让Azure Framework将swagger编辑器识别为有效的重定向URL。


这是我采取的所有步骤。谁能发现我做错了什么?


使用Azure AD门户,我创建了一个新的Azure AD应用程序

在应用程序注册的回复URL中,我添加了https://editor.swagger.io/oauth2-redirect.html enter image description here

我在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为我打开了一个对话框:

enter image description here

所以我输入应用程序ID并单击授权。然后它使用以下参数将我发送到登录URL:

  • response_type:令牌
  • client_id:eb482fb2-8229-434e-b5a6-9fc3e0f06968
  • redirect_uri:https://editor.swagger.io/oauth2-redirect.html
  • 范围:https://management.azure.com
  • state:<Base64 string> 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。

但它匹配!我究竟做错了什么?!?

azure-active-directory swagger swagger-ui
2个回答
0
投票

首先,我将授权URL从https://login.microsoft.com/<tenant-id>/oauth2/authorize更改为https://login.microsoft.com/<tenant-id>/oauth2/v2.0/authorize

然后我不得不关注these instructions,并直接修改应用程序清单以允许隐式流程:

enter image description here

然后我改变了范围。我无法让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

那是我放弃的时候。


0
投票

回复url =“你的web api的swagger page url”与“/oauth2-redirect.html”连接

例如:https://localhost:44329/swagger/oauth2-redirect.html

为应用程序注册中的每个环境配置包括localhost。

© www.soinside.com 2019 - 2024. All rights reserved.