wso2

WSO2 API Manager是用于设计和发布API,创建和管理开发人员社区以及可扩展地路由API流量的完整解决方案。 它利用了来自WSO2企业服务总线,WSO2身份服务器和WSO2治理注册表的经过验证的,可用于生产的集成,安全性和治理组件。 此外,它利用WSO2业务活动监视器进行大数据分析,使您可以即时了解API行为。

到目前为止,API Manager的局限性之一是它与
WSO2身份服务器 。 WSO2 Identity Server充当密钥管理器,用于发布和验证OAuth令牌。

通过改进的体系结构(仍在讨论中),我们计划使用密钥管理器来扩展所有集成点,以便您可以引入自己的OAuth授权服务器。 而且–我们将为产品提供标准的扩展点。 这些扩展点围绕相应的OAuth 2.0配置文件构建。 如果您的授权服务器偏离标准,则需要实现KeyManager接口并插入自己的实现。

API发布者

API Developer首先登录到API Publisher,并使用所有相关元数据创建一个API,然后将其发布到API Store和API Gateway。

API Publisher还将通过OAuth资源集注册端点[1]将API元数据发布到外部授权服务器中。

样品要求:

{
"name": "Photo Album",
"icon_uri": "http://www.example.com/icons/flower.png",
"scopes": [ "http://photoz.example.com/dev/scopes/view", "http://photoz.example.com/dev/scopes/all" ],
"type": "http://www.example.com/rsets/photoalbum"
}

名称必填。 人类可读的字符串,描述一组一个或多个资源。 授权服务器可以在其资源所有者用户界面中使用该名称作为资源所有者。

icon_uri可选。 表示资源集的图形图标的URI。 授权服务器可以在其资源所有者用户界面中为资源所有者使用引用的图标。

必需的范围。 一个数组,提供对此资源集可用的范围描述的URI引用。

输入OPTIONAL。 一个唯一标识资源集语义的字符串。 例如,如果资源集由单个资源组成,该资源是一个身份声明,该身份声明利用标准化声明语义来表示“已验证的电子邮件地址”,则此属性的值可以是此声明的标识URI。

样本响应:

HTTP/1.1 201
Created Content-Type: application/json
ETag: (matches "_rev" property in returned object) ... { "status": "created", "_id": (id of created resource set), "_rev": (ETag of created resource set)
}

将资源发布到授权服务器的目的是使它知道可用资源以及与它们关联的范围。 身份管理员可以在这些作用域和企业角色之间建立关系。 基本上,您可以将范围与企业角色相关联。

API商店

Application Developer登录到API Store,并发现他/她想要为其应用程序创建的API并订阅这些API,最后创建一个应用程序。 每个应用程序均由其客户端ID唯一标识。 有两种方法可以将客户端ID与在API Store中创建的应用程序相关联。

  1. 应用程序开发人员输入客户端ID。

    应用程序开发人员与授权服务器一起创建带外客户端ID,并将客户端ID与他刚刚在API Store中创建的应用程序相关联。 在这种情况下,不使用授权服务的动态客户端注册端点(无步骤3和4)。

  2. API Store调用外部授权服务器的动态客户端注册端点。

    一旦由应用程序开发人员创建了应用程序(通过对一组API进行分组),API商店将调用授权服务器的动态客户端注册端点。

样品申请(第3步):

POST /register HTTP/1.1
Content-Type: application/json
Accept: application/json
Host: authz.server.com {
"client_name": "My Application”,
"redirect_uris":[" https://client.org/callback","https://client.org/callback2 "], "token_endpoint_auth_method":"client_secret_basic",
"grant_types": ["authorization_code" , "implicit"],
"response_types": ["code" , "token"],
"scope": ["sc1" , "sc2"],
}

client_name:在授权过程中提供给用户的客户端的可读名称。 如果省略,则授权服务器可以向用户显示原始的“ client_id”值。 建议客户始终发送此字段。

client_uri:提供有关客户端信息的网页的URL。 如果存在,服务器应该以可点击的方式向最终用户显示该URL。 建议客户始终发送此字段。

logo_uri:引用客户端徽标的URL。 如果存在,服务器应在批准期间将此图像显示给最终用户。 该字段的值必须指向有效的图像文件。

scope:客户端请求访问令牌时可以使用的范围值的空格分隔列表。 此列表中值的语义是服务特定的。 如果省略,授权服务器可以用一组默认的作用域注册一个客户端。

grant_types:客户端可以使用的OAuth 2.0授权类型的数组。

response_types:客户端可以使用的OAuth 2.0响应类型的数组。

token_endpoint_auth_method:令牌端点请求的身份验证方法。

redirect_uris:重定向URI值的数组,用于基于重定向的流,例如授权码和隐式流。

样本响应(步骤4):

HTTP/1.1 200 OK
Content-Type: application/json
Cache-Control: no-store
Pragma: no-cache {
"client_id":"iuyiSgfgfhffgfh",
"client_secret": "hkjhkiiu89hknhkjhuyjhk",
"client_id_issued_at":2343276600,
"client_secret_expires_at":2503286900,
"redirect_uris":[" https://client.org/callback ", " https://client.org/callback2 "],
"grant_types": "authorization_code",
"token_endpoint_auth_method": "client_secret_basic"
}

OAuth客户端应用程序

这超出了API Manager的范围。 客户端应用程序可以通过其支持的任何授权类型与外部授权服务器进行对话,并获得访问令牌[3]。 scope参数在所有令牌请求中都是可选的-客户端省略时,授权服务器可以将默认范围与访问令牌相关联。 如果根本没有使用范围,则API网关可以根据与OAuth客户端,最终用户,资源和操作相关的其他参数进行授权检查。

如果客户端使用OAuth授予请求发送了一组范围,则只有当我们已通过OAuth资源集注册端点通过API发布者将API元数据发布到外部授权服务器中时,这些范围对授权服务器才有意义。 基于用户的角色以及与角色相关联的范围,授权服务器只能为OAuth客户端请求的范围的子集颁发访问令牌。

客户凭证授予类型样本请求:

POST /token HTTP/1.1
Host: server.example.com Authorization: Basic Base64Encode(Client ID:Client Secret) Content-Type: application/x-www-form-urlencoded grant_type=client_credentials Sample Response:HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store Pragma: no-cache {
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"example",
"expires_in":3600,
"example_parameter":"example_value"
}

资源所有者密码授予类型示例请求:

POST /token HTTP/1.1 Host: server.example.com
Authorization: Basic Base64Encode(Client ID:Client Secret)
Content-Type: application/x-www-form-urlencoded grant_type=password&username=johndoe&password=A3ddj3wSample Response:HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Cache-Control: no-store Pragma: no-cache {
"access_token":"2YotnFZFEjr1zCsicMWpAA",
"token_type":"example", "expires_in":3600,
"refresh_token":"tGzv3JOkF0XG5Qx2TlKWIA",
"example_parameter":"example_value"
}

API网关

API网关将拦截OAuth客户端应用程序和API之间流动的所有消息-并提取出HTTP授权头中的访问令牌。 提取访问令牌后,API网关将调用授权服务器的令牌自省端点[4]。

样品要求:

POST /introspect HTTP/1.1
Host: authserver.example.com
Content-type: application/x-www-form-urlencoded
Accept: application/json
Authorization: Basic czZCaGRSa3F0Mzo3RmpmcDBaQnIxS3REUmJuZlZkbUl3token=X3241Affw.4233-99JXJ

样本响应:

{
"active": true,
"client_id":"s6BhdRkqt3",
"scope": "read write dolphin",
"sub": "2309fj32kl",
"user_id": "jdoe",
"aud": "https://example.org/protected-resource/*",
"iss": "https://authserver.example.com/"
}

有效的。 所显示令牌当前是否处于活动状态的布尔指示符。

可选。 整数时间戳,以自UTC 1970年1月1日以来的秒数表示,指示此令牌何时过期。

iat可选。 整数时间戳,以自UTC 1970年1月1日以来的秒数为单位,指示此令牌最初的发布时间。

范围可选。 以空格分隔的字符串列表,代表与此令牌关联的范围。

需要client_id。 请求此令牌的OAuth客户端的客户端标识符。

子可选。 授权此令牌的资源所有者的AS本地的机器可读标识符。

需要user_id。 授权此令牌的用户的可读标识符。

aud可选。 特定于服务的字符串标识符或代表此令牌的预期受众的字符串标识符列表。

是可选的。 表示此令牌的发行者的字符串。

token_type可选。 OAuth 2.0中定义的令牌类型

API网关从授权服务器获取令牌自检响应后,它将检查客户端应用程序(客户端ID)是否已订阅相应的API,然后还将验证范围。 API网关知道API所需的范围,并且自省响应会返回与访问令牌关联的范围。

如果一切正常,API网关将生成一个JWT并将其发送到下游API。 生成的JWT也可以选择包括用户属性。 在这种情况下,API网关将与授权服务器的UserInfo端点对话。

同样,API网关也可以简单地直通访问令牌,而无需验证访问令牌及其相关范围。 在这种情况下,API网关将仅进行限制和监视。

安全端点

在此提议的经过改进的体系结构中,WSO2 API管理器必须与密钥管理器公开的以下端点进行对话。

  • 资源集注册
  • 动态客户端注册端点
  • 自省端点
  • UserInfo端点

对于前三个端点,API管理器将仅充当受信任的系统。 相应的KeyManager实现应知道如何对这些端点进行身份验证。 OpenID Connect UserInfo端点将在运行时与用户提供的访问令牌一起调用。 仅当相应的访问令牌具有从授权服务器读取用户的配置文件的特权时,此方法才有效。

参考资料

[1]:http://tools.ietf.org/html/draft-hardjono-oauth-resource-reg-02

[2]:http://tools.ietf.org/html/draft-ietf-oauth-dyn-reg-19

[3]:http://tools.ietf.org/html/rfc6749

[4]:http://tools.ietf.org/html/draft-richer-oauth-introspection-06

翻译自: https://www.javacodegeeks.com/2014/11/revamping-wso2-api-manager-key-management-architecture-around-open-standards.html

wso2

wso2_围绕开放标准改进WSO2 API Manager密钥管理体系结构相关推荐

  1. 围绕开放标准改进WSO2 API Manager密钥管理体系结构

    WSO2 API Manager是用于设计和发布API,创建和管理开发者社区以及可扩展地路由API流量的完整解决方案. 它利用了WSO2企业服务总线,WSO2身份服务器和WSO2治理注册表中经过验证的 ...

  2. WSO2 API Manager调研学习总结

    近期要做一个SOA服务治理相关的项目,详细调研了下WSO2的API Manager(简称,APIM).因为在调研过程中发现,国内研究WSO2的开发者较少,社区中也不是很活跃,可供直接上手的中文文档很少 ...

  3. WSO2 API Manager安装部署配置

    1. 系统要求 至少 3GHz CPU 至少 4GB 内存 (2GB给WSO2,2GB给操作系统) 至少 10GB 磁盘 JDK1.8_x64, 其中JDK1.8.0_151版本存在已知的GZIP d ...

  4. oauth2和jwt_使用具有OAuth2的Web应用程序和JWT的使用来调用API – WSO2 API Manager

    oauth2和jwt 在这篇文章中,我将分享我在WSO2 API管理器(API-M)中针对行业中非常常见且有用的场景的经验和理解. 简要地说明以下流程. 公开了一个API,供应用程序开发人员在API管 ...

  5. 使用带有OAuth2的Web应用程序和使用JWT来调用API – WSO2 API Manager

    在这篇文章中,我将分享我在WSO2 API管理器(API-M)方面的经验和理解,以解决该行业中非常普遍和有用的情况. 简要地说明以下流程. 公开了一个API,供应用程序开发人员在API Manager ...

  6. WSO2 Api Manager 集成 Analytics

    WSO2 Api Manager仅实现了Api网关功能,但没有统计监控功能,必须与其Analytics组件集成才能实现,集成过程如下: 参考链接:https://docs.wso2.com/displ ...

  7. WSO2 API Manager代码问题漏洞(CVE-2022-29464)

    文章目录 0x01 漏洞介绍 0x02 影响版本 0x03 漏洞编号 0x04 漏洞查询 0x05 漏洞环境 0x06 漏洞复现 0x07 修复建议 免责声明 摘抄 0x01 漏洞介绍 WSO2 AP ...

  8. WSO2 API Manager的使用

    以下为:使用WSO2 API Manager的发布器和开发人员门户创建.发布和调用API的分步指南. 官网链接:https://apim.docs.wso2.com/en/latest/get-sta ...

  9. 漏洞分析: WSO2 API Manager 任意文件上传、远程代码执行漏洞

    漏洞描述 某些WSO2产品允许不受限制地上传文件,从而执行远程代码.以WSO2 API Manager 为例,它是一个完全开源的 API 管理平台.它支持API设计,API发布,生命周期管理,应用程序 ...

最新文章

  1. AngularJS2.0 教程系列(一)
  2. R语言splines包构建基于logistic回归的自然样条分析:南非心脏病数据集、非线性:基函数展开和样条分析、你简单分析的不重要特征,可能只是线性不显著、而非线性是显著的
  3. C++ 调用lib 和 dll的 方法 及 动态库DLL与静态库lib的区别
  4. 操作系统回忆录:进程、线程、资源调度
  5. 深度学习核心技术精讲100篇(四十四)-深度召回在招聘推荐中的挑战和实践
  6. Codeforces 947E Perpetual Subtraction (线性代数、矩阵对角化、DP)
  7. 多项式求逆模板(NTT + mod)
  8. 介绍 Spring 3.1 M1 中的缓存功能
  9. else 策略模式去掉if_java – 用状态/策略模式替换if/else逻辑
  10. zz backgroundworker C#
  11. yii的pathinfo方式实现
  12. java coap_CoAP协议-以Californium(Java)为例的CoAP初步实现
  13. cer openssl 转pem_HTTPS证书转换成PEM格式
  14. ps中给图层新建文件夹
  15. COSO内部控制框架
  16. 显著性检验 p-value
  17. 固态硬盘计算机怎么自定义分区,如何将SSD固态硬盘设置为主硬盘,如何将SSD分区设置为主硬盘?...
  18. Dart | Flutter 中的异常处理框架 Talker
  19. Vue Video.js播放m3u8视频流格式(video+videojs-contrib-hl)
  20. 欢迎下载psp的埃舍尔画集主题

热门文章

  1. kali linux 安装lxde_【kaliLinux】安装
  2. 环信IM快速集成集成,实现客服功能(单聊)
  3. 运行项目报错 proxy error: could not proxy request...
  4. CPU四核八线程和四核四线程的区别
  5. xPC信号采集和分析(2)
  6. 用装饰器缓存某个函数的结果
  7. C# LINQ标准查询操作符
  8. Algorithm - Bubble Sort(Java)
  9. 关于RO、RW、ZI的说明
  10. 装饰工程作业指导书-1