我们正在寻求实现Web(外部用户)SSO和API网关,以支持Web应用程序和移动应用程序以及潜在的第三方应用程序甚至B2B方案。
我的想法是让SSO网关处理用户对网站和API的访问,使用OAuth或OpenID Connect对最终用户进行身份验证。
对于任何API URL,API网关都位于其后。这旨在使用诸如客户机ID和密码之类的东西来处理客户机/应用程序级别的身份验证。
想法是,用户将登录到网站或移动应用程序,然后/如果/当该应用程序需要调用API时,它将需要发送其自己的凭据(客户端凭据流)以及承载令牌,以证明谁用户也是如此(资源所有者密码流)。
客户端凭证与安全性无关,而与对API函数的粗粒度访问有关,它提供了API使用情况,流量整形,SLA等的可见性,但是需要用户身份来强制执行下游的数据级授权。
我看过的大多数API网关似乎仅支持单一级别的身份验证,例如,目前我们正在研究可以使用OAuth进行身份验证以处理用户或应用程序的Apigee,但目前尚不清楚该怎么做两者都一次。
是否有任何方法可以使SSO网关的用户承载令牌与API网关的客户端承载令牌或凭据很好地配合使用,最好采用一种基于标准的方式?还是我们只需要破解它,以便其中一个进入auth标头,另一个进入有效负载?还是有一种方法可以同时满足两个目的(例如,混合承载令牌)?
我对身份管理中的所有工作(OAuth2,OpenID Connect,UMA等)正在进行的工作感到惊讶,没有人正在寻找一种同时处理多个身份验证级别(用户,客户端,设备等)的方法。
不幸的是,我没有足够的声誉积分来评论上一篇文章,所以我在这里加两分钱。全面披露:我为Apigee工作。
http://apigee.com/docs/api-services/content/oauthv2-policy#accesstokenelement解释了如何在授权标头以外的位置将访问令牌赋予Apigee OAuthV2策略。如果您已将SSO承载令牌存储为Apigee OAuth令牌的属性,则在验证Apigee令牌后,您将自动获取SSO承载令牌作为流变量,并可以根据需要使用它。
例如,如果您在请求中将令牌作为“令牌”查询参数发送,则可以在OAuthV2策略中编写以下代码
request.queryparam.token
然后该策略将从该查询参数中将其提取。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句