Security API中的正确身份验证策略

Security API中的正确身份验证策略,security,oauth,jwt,graphql,openid-connect,Security,Oauth,Jwt,Graphql,Openid Connect,我想设计一个GraphQLAPI。此API将由一些浏览器应用程序使用,也可直接用于希望创建自己的脚本/生成报告等的用户。该API将依赖支持Oauth Openid Connect okta的第三方应用程序进行用户和角色管理。它将是用德扬戈语写的 因为JWT是保护GraphQLAPI的推荐方法,而且OIDC使用JWT令牌。我想到了一种简单的方法,API只接受okta发行的JWT令牌。这是可行的,但当API要求okta验证令牌时,我看到了很多延迟。在生产环境中,此延迟可能会更小,因为我正在免费试用a

我想设计一个GraphQLAPI。此API将由一些浏览器应用程序使用,也可直接用于希望创建自己的脚本/生成报告等的用户。该API将依赖支持Oauth Openid Connect okta的第三方应用程序进行用户和角色管理。它将是用德扬戈语写的

因为JWT是保护GraphQLAPI的推荐方法,而且OIDC使用JWT令牌。我想到了一种简单的方法,API只接受okta发行的JWT令牌。这是可行的,但当API要求okta验证令牌时,我看到了很多延迟。在生产环境中,此延迟可能会更小,因为我正在免费试用auth0而不是生产okta上进行测试。所以我认为也许我的API应该发布自己的JWT令牌。在这里,我可以想到三种策略:

保持原样–仅使用OIDC JWTs。 引入一个登录变体或登录REST端点,该端点将接受上面的OIDC并发出可用于所有其他操作的JWT。 如上所述,但也允许直接使用okta的JWTs,我不确定是否可以用Django的auth系统实现它,因此如果识别令牌,就不会调用OIDC。
这三种方法中哪一种是正确的,并且可能是OIDC设计人员想要的保护我的API的方法?

JWT令牌不需要Okta通过IdP进行验证。您只需要使用公钥,它可以在发现响应中作为jwks url找到,然后您就可以验证签名,而无需任何IdP调用


我想你怎么能轻松获得每秒2-4k的验证。

比较Auth0试用版和Okta的性能似乎有点不对劲?一般来说,我建议只使用OIDC。使用您自己的或任何专有的身份验证是供应商锁定,可能会阻止与其他人的集成。我只使用OIDC。我不使用任何特定于okta或auth0的功能。只有OIDC协议,它们都实现了。JWT令牌一般不需要Okta通过IdP进行验证。您只需要使用公钥,它可以在发现响应中作为jwks url找到,然后您就可以验证签名,而无需任何IdP调用。我想你可以轻松获得每秒2-4k的验证。谢谢。这意味着我需要更仔细地了解django插件是如何处理它的。可能是配置错误,下载密钥后无法缓存密钥。或者,它可能尝试检索每个调用的用户数据。我相信,这个评论可能是我想要的答案。现在我看到mozilla_django_oidc与配置的“jwks端点”一起使用时,每次检查都会重新下载密钥。在此之后,它将始终获取用户信息,即使用户已经在数据库中。这是延迟的根源。如果你不介意,请写下你给我的信息作为回答,这样我就可以接受了。再次感谢。我为mozilla django oidc开了一张罚单,我希望我的想法得到批准,我可以合并我的修复程序。我不确定您的设置,但我建议-它可以是单个静态二进制文件,在GraphQL端点之前充当身份验证/授权代理。它可以与任何OIDC IdP Okta、Google、Key斗篷等一起使用。。。。