【问题标题】:Getting AzureAD implicit flow working with Swagger UI使用 Swagger UI 获取 AzureAD 隐式流
【发布时间】: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_urihttps://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


【解决方案1】:

reply url = "your web api's swagger page url" 与 "/oauth2-redirect.html" 连接

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

为您的应用注册中的每个环境(包括您的本地主机)进行配置。

【讨论】:

    【解决方案2】:

    首先,我把授权网址从https://login.microsoft.com/<tenant-id>/oauth2/authorize改成了https://login.microsoft.com/<tenant-id>/oauth2/v2.0/authorize

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

    然后我改变了范围。我无法让management.azure.com 运行,但我可以通过将/.default 附加到范围来获得https://graph.windows.net。 (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

    那是我放弃的时候。

    【讨论】:

      猜你喜欢
      • 2016-11-29
      • 2021-07-27
      • 1970-01-01
      • 2019-02-08
      • 2023-03-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-04-24
      相关资源
      最近更新 更多