如何(您可以)为Auth0单页应用程序配置Azure API管理



方案:auth0单页应用程序客户端。.NET Web API和Angular Spa都配置为使用此客户端。效果很好。

我想将Azure API管理添加为API前面的一层。已经在管理门户网站中设置了API,更新的水疗中心调用API,从水疗中心测试的调用,效果很好。

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

我在哪里:

在开发人员门户网站上,我可以选择授权代码作为auth类型,通过Auth0成功进行登录过程,然后恢复携带者令牌。但是,对API的电话总是返回401。我认为这是因为我对如何正确设置它感到困惑。据我了解:

  • 我要么遵循说明并在Auth0中设置新的API客户端,但是如果是这种情况,那么它肯定不会工作,因为从一个客户端生成的代币无法与我的Spa客户端使用?(或者我需要更改它以使其正常工作)

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

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

好吧,我不认为我会很快回答自己的问题。原因主要源于我对这些东西的普遍无知,再加上试图以例子并将它们融合在一起满足我的需求。发布此信息以帮助任何在这里发现自己的人。

我决定使用Azure API Management中的单个应用程序客户端并使其与Azure API管理一起使用,而是决定使用另一种方式,并使非交互式客户端与我的水疗中心一起使用。最终,"感觉"更正确:API是我要确保的,我应该让API管理门户运行,然后更改我的水疗中心。

我记得/意识到我需要在API中更新我的受众以匹配Auth0中客户端的受众,然后管理门户开始工作。然后,让水疗中心与API合作成为一个挑战:我试图找出如何更改Auth0 Angular代码以通过听众匹配API发送的观众,但它一直向客户发送客户ID。(顺便说一句,通过使用https://jwt.io/清点携带者令牌并确定正在发生的事情 - 查看观众的" aud"值。

最后,我更改了我的API,在new JwtBearerAuthenticationOptions对象中,TokenValidationParameters对象(类型TokenValidationParameters)具有属性ValidAudiences(是的,还有一个ValidAudience属性,令人困惑),可以吸引多个受众。所以,我将我的客户端添加到了。

我唯一更改的另一件事(可能对我来说可能是特定的,不确定)是我必须更改auth0中的auth0中的 jsonwebtoken签名算法值,OAuth Tab)从HS256到RS256。

完成了所有完成的工作,现在请求API管理门户和我的水疗中心。

好奇地知道这是否是"正确"的方法,还是我在这里做了任何被认为危险的事情。

,因为您能够使用.NET API工作对jwt s进行验证,因此实际上只需更改即可与Azure API管理一起使用。

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

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

这是API管理要求JWT令牌的参考

可选的阅读

最新更新