在这篇文章中,我将分享我在WSO2 API管理器(API-M)方面的经验和理解,以解决该行业中非常普遍和有用的情况。

简要地说明以下流程。

公开了一个API,供应用程序开发人员在API Manager(可为API添加访问控制)的控制下使用。 然后,应用程序开发人员使他们的应用程序使用这些API。 开发和测试完成后,他们会将其提供给App Store的最终用户。 然后,最终用户可以在商店中注册并使用自己的凭据使用这些应用程序。 该应用程序将提供所需的服务,以调用其已订阅的API。

以上情形在WSO2 API-M中得到了很好的演示,在[1]的文档中说明了Pizza hacks示例。

为了清楚起见,我将简要介绍这些步骤。 有关详细步骤,请参阅[1]中的文档。

API开发人员角色

  • 我们在WSO2-应用程序服务器或任何其他所需的应用程序服务器中部署与“比萨饼订购”相关的后端服务。 (从API-M示例svn下载代码,使用Maven3进行构建并将其部署在WSO2 AS中。如果检查WADL,则可以检查其公开的资源。请注意端点URL。)

  • 然后,我们将这些服务作为API在WSO2 API-M Publisher中发布,以便它们将在API-M Store中可用(登录到API-M Publisher,默认包为https:// localhost:9443 / publisher,并将API发布为在示例文档中进行了指导。我们应确保生产端点URL与第一步中观察到的相匹配。

应用开发人员角色

  • 现在出现了一位应用程序开发人员,他希望开发一个应用程序来订购Pizza。 他/她可以在商店中注册此应用,并订阅这些应用开发所需的API。 因此,此APP开发人员将使用以前的开发人员发布的API公开的服务。 比萨订购示例Web应用程序的代码也可以从svn下载。

  • 在订阅时,他/她会获得消费者秘密和消费者密钥,然后将其用于请求OAuth令牌以访问API(在本示例中,我们使用授予类型“ password”中要求的用户名和密码。还有其他几种可能的授予类型同样,如果我们不想发送密码)。

从“我的订阅”中获取消费者密钥和机密。

  • 开发人员将消费者密钥和消费者秘密嵌入到Pizza订购应用程序中(在大多数情况下,在web.xml中)。
<context-param><param-name>consumerKey</param-name><param-value>FyfSK4RNHqGETmnNkaI87hIoNFQa</param-value></context-param><context-param><param-name>consumerSecret</param-name><param-value>1NFr7jb8JBA3IFa6gkjoN_PoYAca</param-value></context-param>

此时,我们可以使用以下简单的curl命令检查令牌的工作方式。 提供从上面的UI获取的访问令牌。

curl -k -H "Authorization: Bearer <access_token>" https://localhost:8245/pizzashack/menu/1.0.0

这将返回比萨饼的菜单详细信息,如下所示:

[{"price":"13.99","icon":"/images/6.png","description":"Grilled white chicken, hickory-smoked bacon and fresh sliced onions in barbeque sauce","name":"BBQ Chicken Bacon"},{"price":"24.99","icon":"......................:"/images/5.png","description":"Rich and creamy blend of spinach and garlic Parmesan with Alfredo sauce","name":"Spinach Alfredo"},{"price":"15.99","icon":"/images/4.png","description":"Six cheese blend of mozzarella, Parmesan, Romano, Asiago and Fontina","name":"Tuscan Six Cheese"}]

由于我们已经看到了访问令牌,因此可以在这里使用它。 但是,当最终用户来订购披萨时,他/她将不会被看到。 此外,此令牌还与USER_TYPE:APPLICATION有关,APPLICATION比最终用户具有更多的特权,因此我们无论如何不能让用户使用它。 因此,使用嵌入的使用者密钥/秘密和最终用户输入的凭据(如果使用了密码授予类型)为最终用户生成了一个单独的令牌,该凭据将与USER_TYPE:APPLICATION_USER相关。

最终用户

因此,这是在App Store中注册的最终用户。

然后,最终用户可以使用该应用程序在线订购披萨,在http:// localhost / pizzashack的应用程序中输入其凭据。

位于中间的API-M在此方案中充当授权服务器,管理公开API的使用。

那么JWT断言在哪里起作用?

JWT断言是一种用于发送调用API的最终用户的详细信息的格式。 就像SAML断言会携带用户声明一样,JWT也以JSON表示符携带用户声明。 我们可以在[2]上找到更多详细信息。 这用于将那些详细信息传递到后端服务,这可能需要它们进行监视或其他目的。 默认的JWT令牌如下。

{"iss":"wso2.org/products/am","exp":1391029971429,"http://wso2.org/claims/subscriber":"admin","http://wso2.org/claims/applicationid":"1","http://wso2.org/claims/applicationname":"DefaultApplication","http://wso2.org/claims/applicationtier":"Unlimited","http://wso2.org/claims/apicontext":"/pizzashack/menu","http://wso2.org/claims/version":"1.0.0","http://wso2.org/claims/tier":"Bronze","http://wso2.org/claims/keytype":"PRODUCTION","http://wso2.org/claims/usertype":"APPLICATION","http://wso2.org/claims/enduser":"admin","http://wso2.org/claims/enduserTenantId":"-1234"
}

干杯!

资源:

  1. http://docs.wso2.org/display/AM150/Invoking+APIs+using+a+Web+App+Deployed+in+WSO2+AS
  2. http://lalajisureshika.blogspot.com/2013/06/passing-end-user-details-from-client-to.html
  3. http://asanka.abeysinghe.org/2014/01/oauth-for-application-developer-and.html
参考: 使用我们的JCG合作伙伴 Pushpalanka(位于Pushpalanka的Blog博客) 使用带有OAuth2的Web应用程序调用API,并使用JWT – WSO2 API Manager 。

翻译自: https://www.javacodegeeks.com/2014/02/invoking-apis-using-a-web-app-with-oauth2-and-use-of-jwt-wso2-api-manager.html

使用带有OAuth2的Web应用程序和使用JWT来调用API – WSO2 API Manager相关推荐

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

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

  2. 小程序笔记(9)调用腾讯api获取周边饮食店信息

    调用腾讯api获取周边饮食店信息 实现功能 实现流程 基本逻辑实现 开始注册key 开始代码 先配置app.json中的权限获取 index.wxml index.wxss index.jssssss ...

  3. 新书推荐 |《机器学习即服务:将Python机器学习创意快速转变为云端Web应用程序》...

    新书推荐 <机器学习即服务:将Python机器学习创意快速转变为云端Web应用程序> 点击上图了解及购买 谷歌云和Salesforce首选合作伙伴SpringML数据科学副总裁领衔撰写,讲 ...

  4. web应用程序与web网站的区别

    前言: 最近学习了与web编程相关的很多的基础知识,接下将是一系列的基础知识的对比学习,今天先简单的了解一下web应用程序与web网站的区别! 1.编译方式不一样 这个是我认为二者之间最大的区别了,首 ...

  5. 用 Google Gears 增强您的 Web 应用程序

    用 Google Gears 增强您的 Web 应用程序 文档选项 未显示需要 JavaScript 的文档选项 打印本页 将此页作为电子邮件发送 样例代码 2009 年 8 月 20 日 本文将简要 ...

  6. 在Web应用程序中使用Canvas API

    更多HTML 5文章请查阅HTML 6在线网站http://www.html5online.com.cn 本文概述 本文介绍如何在一个Web应用程序中利用HTML 5中的Canvas API创建.编辑 ...

  7. 带有Gradle的Spring Boot Web应用程序

    1.简介 在继续使用Gradle创建演示Spring Boot Web应用程序之前,我假设我们已经准备好使用Gradle设置 . 摇篮设置指南 Gradle官方网站 2.创建演示应用程序 现在我们已经 ...

  8. 带有Jersey和Spring的RESTful Web应用程序

    几个月前,我们的任务是创建一个API,以向第三方开发人员公开我们系统中的某些功能. 我们选择将这些功能公开为一系列REST Web服务. 我开始使用Jersey ,它是JSR 311 (用于Restf ...

  9. 在15分钟内使用Spring Boot和Spring Security构建一个Web应用程序

    "我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. 开发人员 ...

最新文章

  1. 改变UITableView的headerView、footerView背景颜色
  2. 如何查询电脑的文件系统的分类是哪一种?
  3. 三角剖分(delaunay)拓扑结构 高维近邻
  4. 面对滚滚而来好政策 安防行业该如何发展
  5. python 多分类模型优化_【Python与机器学习】:利用Keras进行多类分类
  6. 三维重建6:绑架问题/SensorFusion/IMU+CV-小尺度SLAM
  7. 即时大数据流处理=即时风暴
  8. inline,block,inline-block的区别
  9. 第三四五章(PTA复习)
  10. OllyDbg笔记-异常忽略相关设置
  11. 如何 Scale Up/Down 应用?- 每天5分钟玩转 Docker 容器技术(126)
  12. SAP License:SAP的公司间销售
  13. Hive中分组取前N个值
  14. linux报mce清除不良代码,如何分析系统MCE异常?
  15. 远程调试运行在Resin上面的Web应用程序
  16. 声道测试音频_一音成佛的尺八音色,电吹管的单声道和双声道录音对比(2)
  17. 思科 命令 TFTP
  18. 目标检测(Object Detection)—— M2Det
  19. 2015年度精品 最新力作32位和64位xp,win7,win8,win10系统下载(电脑城专用版)
  20. 微信朋友圈马赛克图片 —— 抓包破解

热门文章

  1. 权限管理系统2_权限表,权限模块表
  2. php 向html追加元素,在PHP中存储兄弟元素的属性和内部HTML
  3. ReviewForJob——深度优先搜索的应用
  4. RabbitMQ消息
  5. camel apache_如何使用Apache Camel,Quarkus和GraalVM快速运行100个骆驼
  6. 程序员面试算法_程序员的前20个搜索和排序算法面试问题
  7. java分割句子_关于Java的一些句子
  8. 对象空指针_可选和对象:空指针救星!
  9. 将Amazon Cognito与单页面应用程序(Vue.js)集成
  10. spring集成jndi_Spring应用程序与JNDI连接池的集成测试