我有一个网站,mywebsite.com,,用户可以登录。登录是通过将未经身份验证的会话重定向到ssologin.com上的SSO提供程序来处理的,后者验证凭据,然后使用访问令牌重定向回mywebsite.com,以便创建本地会话。
该网站是一个单一页面的web应用程序,它使用JavaScript调用通过API网关3 3scale公开的API。
我想了解的是,我如何才能得到3 3scale,以履行OAuth访问令牌发布到网站。我猜这应该很简单,因为3 3scale似乎把它委托给了一个授权URL,但是我不确定它背后的机制以及它是否在做我所期望的事情。
有人能解释一下我是否--以及如何--能做到这一点吗?我已经阅读了这些文档,但是我很难理解它,因为它掩盖了在OAuth访问令牌被授予之后发生的事情,并且它没有涉及到令牌可能被创建到带外(即看不到3 3scale)的场景。
我认为我想在这个场景中使用的流是客户端web应用程序/隐式授权流,但是如果我错了,请纠正我。
我试过破译帮助文件,但我仍然有很多问题:
实际上,我想要做的是使用OpenID连接并获得ID令牌,但是3 3scale本机不支持这一点。我能用3 3scale做些什么来伪造这个并且仍然返回ID令牌,有效地使它的行为像OpenID连接吗?
发布于 2015-06-02 10:12:43
TL;DR:使用3 3scale API调用来存储access_tokens,这样3 3scale:https://github.com/3scale/nginx-oauth-templates/tree/master/oauth2就会遵守它们
curl -X POST "http://su1.3scale.net/services/<SERVICE_ID>/oauth_access_tokens.xml?provider_key=<PROVIDER_KEY>&app_id=<CLIENT_ID>&token=<TOKEN>&ttl=<TTL>"
3 3scale提供了许多API调用来管理访问令牌,这包括存储和删除访问令牌。您可以在这里找到用于管理访问令牌的这些API调用的列表:https://github.com/3scale/nginx-oauth-templates/tree/master/oauth2
因此,您应该能够将在3 3scale之外发出的访问令牌与应用程序(可能是您的单个页面web应用程序)关联起来,并将该访问令牌用于授权目的。实际上,3 3scale不生成访问令牌,而是API网关生成访问令牌。
这完全是为了检查使用给定访问令牌的3 3scale中的应用程序是否被授权调用给定的API端点,即仅授权,而不是身份验证和/或身份验证。当用户登录时,用户身份验证应该都是在3 3scale之外完成的。
3 3scale为API网关提供了许多配置模板,具体取决于您想要实现的流程,以及您是希望由API网关(令牌生成文件夹)还是由外部OAuth提供程序(无令牌生成文件夹)生成令牌。您可以在这里找到这些模板,并解释它们在每个不同的流文件夹中的工作方式:https://github.com/3scale/nginx-oauth-templates/tree/master/oauth2。由于您有自己的OAuth提供程序来生成访问令牌,因此需要使用这些模板,而不是3 3scale中的Integration中生成的文件。
要回答你的具体问题:
1. Call the 3scale endpoint to store the access token returned, directly from your application
2. Make the redirect\_url for the SSO provider be the API Gateway instead of your application so that it stores the access token in 3scale and sends the access\_token back to your application also. This will require customizing the API Gateway configuration templates.
最终,Gateway可以位于应用程序和访问令牌发行者之间,将它们捕获并存储在3 3scale中,从而中介整个交换。3 3scale中唯一的限制是访问令牌格式,它必须是长达256个字符的字母数字字符串。
https://stackoverflow.com/questions/30589451
复制相似问题