【问题标题】:How to (can you) configure Azure API Management for Auth0 single page application如何(你能)为 Auth0 单页应用程序配置 Azure API 管理
【发布时间】:2018-05-28 08:53:11
【问题描述】:

场景:Auth0 单页应用程序客户端。 .NET Web API 和 Angular SPA 都配置为使用此客户端。效果很好。

我想将 Azure API 管理添加为 API 前面的一个层。已在管理门户中设置 API,更新 SPA 以调用 API,测试来自 SPA 的调用,效果很好。

现在,我想使用正确的安全设置配置 API 管理门户,以便人们可以从开发人员门户调用 API。我用这个 [https://auth0.com/docs/integrations/azure-api-management/configure-azure] 作为指导。

我在哪里:

在开发者门户中,我可以选择授权代码作为身份验证类型,使用 Auth0 完成成功的登录过程并取回不记名令牌。但是,对 API 的调用总是返回 401。我认为这是因为我对如何正确设置它感到困惑。据我了解:

  • 要么我按照说明在 Auth0 中设置一个新的 API 客户端,但如果是这种情况,那么它肯定不会起作用,因为从一个客户端生成的令牌不会对我的 SPA 客户端起作用? (或者我需要改变什么才能让它工作)

  • 或者,我应该如何配置 Azure API 管理以使用 SPA 应用程序。 (这将是我的首选方法,在 Auth0 中有两个客户端似乎“混乱”)。但是,我的授权端点 URL 中不需要“受众”值吗?我怎么得到它?

如果有人这样做,将非常感谢这里的一些指导。

【问题讨论】:

    标签: single-page-application auth0 azure-api-management


    【解决方案1】:

    由于您可以使用 .Net API 验证 jwts,因此实际上只需进行少量更改即可使用 Azure API 管理。

    在 API 管理中, 在操作(或所有操作)上创建 validate-jwt 入站策略 将audiencesissuers 设置为与您在.NET web api 中使用的相同。 (如果您还不知道,可以查看 Auth0 门户中的值)

    此时缺少的重要字段是Open ID URLs,因为 auth0 默认使用 RS256。该 url 可以在您的 Auth0 门户中找到:应用程序 -> 您的单页应用程序 -> 设置 -> 向下滚动,Show Advanced Settings -> 端点。然后复制OpenID Configuration

    Here's the reference API 管理对 JWT 令牌的要求

    optional reading

    【讨论】:

      【解决方案2】:

      嗯,我不认为我会这么快回来回答我自己的问题。原因主要在于我对这些东西的普遍无知,再加上试图举出例子并将它们融合在一起以满足我的需要。发布此内容是为了帮助其他发现自己在这里的人。

      我没有采用 Auth0 中的单一应用程序客户端并使其与 Azure API 管理一起使用,而是决定采用另一种方式,让非交互式客户端与我的 SPA 一起使用。这最终“感觉”更正确:API 是我要保护的东西,我应该让 API 管理门户正常工作,然后更改我的 SPA 以使用它。

      一旦我记得/意识到我需要更新 API 中的受众以匹配 Auth0 中客户端中设置的受众,管理门户就开始工作了。让 SPA 与 API 一起工作变成了一个挑战:我试图找出如何更改 auth0 角度代码以传递受众以匹配 API 发送的受众,但它一直在发送 ClientID。 (顺便说一句,通过使用https://jwt.io/ 来解密 Bearer 令牌并弄清楚发生了什么,可以更轻松地找出所有这些 - 看看观众的 'aud' 值。

      最后,我更改了我的API,在new JwtBearerAuthenticationOptions对象中,TokenValidationParameters对象(TokenValidationParameters类型)有一个属性ValidAudiences(是的,还有一个ValidAudience属性,混淆) 可以吸引多个观众。所以,我在其中添加了我的 ClientID。

      我随后更改的唯一另一件事(可能是特定于我,不确定)是我必须为我的非交互式客户端更改 Auth0 中的 JsonWebToken 签名算法 值(高级设置, oAuth 选项卡)从 HS256 到 RS256。

      完成所有这些后,现在来自 API 管理门户和我的 SPA 工作的请求。

      很想知道这是否是“正确”的做法,或者我是否在这里做了任何被认为是危险的事情。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-31
        • 2021-02-06
        • 1970-01-01
        • 2020-06-10
        • 2015-12-31
        • 2021-01-05
        • 2013-01-18
        • 2020-06-03
        相关资源
        最近更新 更多