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

oauth2和jwt

在这篇文章中,我将分享我在WSO2 API管理器(API-M)中针对行业中非常常见且有用的场景的经验和理解。

简要地说明以下流程。

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

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

rsz_jwt_token_scenario

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

API开发人员角色

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

rsz_api1

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

rsz_addapi

应用开发人员角色

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

rsz_addapp

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

rsz_subscribeapi

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

rsz_generatetokens

  • 开发人员将消费者密钥和消费者秘密嵌入到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和jwt

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/344211.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[渝粤教育] 西南科技大学 高等数学1 在线考试复习资料

高等数学1——在线考试复习资料 一、单选题 1.如果函数在区间上的导数( ),那么在区间上是一个常数( )。 A.恒为常数 B.可能为常数 C.恒为零 2.设,则( )。 A. B. C.0 D.1 3.设,则( )。 A. B. C. D. 4.求极限的结果是( )。 A.0 B. C. D.不存在 5.求的反函数( )。 A. B. C. D.…

jquery table ajax,JQuery Ajax动态加载Table数据的实例讲解

我们在jsp定义一个select和一个table&#xff0c;要求实现根据select的选值&#xff0c;动态加载table数据。table第一次加载数据的function定义如下&#xff1a;function loadData() {var c ;$(#import-table).DataTable({ajax: {url: "../../../hot/getByCode.action…

android listview 去掉水波纹效果_CocosCreator之分层管理的ListView

前言进入公众号回复listview即可获得demo的git地址。之前写的一篇文章《Creator之ScrollView那些事》中提到了官方Demo中提供的ListViewCtl,只是实现了纵向滑动&#xff0c;没有实现横向滑动。并且建议官方可以把功能做全然后放入组件库中供开发者使用。然后有个牛逼大神说这个…

【渝粤教育】电大中专微生物与寄生虫基础 (2)_1作业 题库

1.属于真核型微生物的是&#xff08;&#xff09;。 A.衣原体 B.放线菌 C.真菌 D.病毒 E.支原体 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;B 2.下列哪一个特点不是微生物的共有特点&#xff08;&#xff09; A.结构简单 B.肉眼不直接可见 C.需要借助显微镜观察 …

小米小爱蓝牙音箱_UG绘制一个小米小爱同学蓝牙音箱

今天来绘制这么一个小米蓝牙音箱&#xff0c;渲染后的效果如下建模步骤&#xff1a;1打开UG&#xff0c;首先绘制一个直径为135mm的圆拉伸80mm。2在XZ平面上绘制草图&#xff0c;以Y轴旋转360度求差3整体抽壳2mm4继续在拉伸面上绘制这么一个大概的草图5选择草图的小圆&#xff…

J2Pay –完整示例

介绍 在本节中&#xff0c;我们将详细探讨如何使用网关并成功调用所有四种方法&#xff0c;即购买&#xff0c;退款&#xff0c;作废和重新计费。 对于此示例&#xff0c;我们将使用授权网关。 让我们开始。 首先&#xff0c;我们将获得Authorize网关对象。 Gateway gateway…

ajax17,17个使用AJAX技术的数据表格控件

为了将数据高效的展示出来&#xff0c;数据需要有合适的结构&#xff0c;展现结构设计的越好&#xff0c;用户就越容易理解信息的内容。因此&#xff0c;提高数据的可萃取性和可扫描性非常有意义。表&#xff0c;是一个非常好的数据呈现结构&#xff0c;非常便于人们分析和理解…

【渝粤教育】电大中专测量学 (5)作业 题库

1.测量学是研究地球的形状和大小以及确定地面点&#xff08;&#xff09;位置的科学。 A.平面 B.空间 C.曲面 D.高程 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2.测量学中的水准面是一个&#xff08;&#xff09;。 A.斜平面 B.水平面 C.竖直面 D.曲面 正确 正…

【渝粤教育】电大中专电商运营实操 (25)作业 题库

电子商务最重要的是&#xff08;&#xff09; A商务 B网站 C信息技术 D货物 正确 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2下列关于电子商务的特点叙述错误的是&#xff08;&#xff09; A全球性 B简单的电子化支付手段 C交易环节多&#xff0c;营销成本高 D信息…

tx2无法识别网络_织点智能算法大牛刘思伟:商品识别在收银结算场景的应用与落地...

线下门店消费越快捷、过程越便利&#xff0c;就越能吸引顾客的二次购物。相较于传统的人工收银方式&#xff0c;使用自助收银设备不仅可以减少顾客排队等候的时间&#xff0c;提升收银效率&#xff0c;同时对经营者来说&#xff0c;可以有效降低人工成本。目前&#xff0c;市面…

windows服务器网站日志,windows服务器网站日志文件

windows服务器网站日志文件 内容精选换一换华为云帮助中心&#xff0c;为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档&#xff0c;帮助您快速上手使用华为云服务。网页防篡改可实时监控网站目录&#xff0c;并通过备份恢…

【渝粤教育】电大中专电子商务网站建设与维护 (4)作业 题库

1.阿里巴巴的盈利项目主要是哪些&#xff08; &#xff09; A.委托设计公司网站 B.诚信通 C.以上都正确 D.中国供应商 E.网上推广项目 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;未作答 2.阿里巴巴目前的电子商务在哪个阶段&#xff08; &#xff09; A.信息流 B…

初始化创建画布_使用HTML5,画布和开放数据创建全球降水(雨)可视化

初始化创建画布我目前正在为Three.js编写下一本书&#xff0c;其中一章涉及可视化开放数据。 在寻找可以使用的数据时&#xff0c;我遇到了来自NOAA的一组数据。 通过此站点&#xff0c;您可以以网格格式下载一组全世界的每月降水报告。 因此&#xff0c;我下载了它们&#xff…

【渝粤教育】电大中专药品储存与养护技术 (2)作业 题库

1.在能够预见到某种药品经过短时间储存易发生质量变化时&#xff0c;该种药品的出库原则是&#xff08;&#xff09;。 A.近效期先出 B.先产先出 C.先进先出 D.易变先出 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;B 2.药品批准文号的格式为&#xff08;&#xff…

星之卡比镜之迷宫机器人_机器人工程师入门(0)

前言&#xff1a;多年前看到一片知乎文章YY硕&#xff1a;机器人工程师学习计划​zhuanlan.zhihu.com当时看到这个&#xff0c;只觉醍醐灌顶&#xff0c;能看到有如此详尽的关于机器人工程师的个人技术发展规划&#xff0c;又不禁觉得有些遗憾&#xff0c;因为这个规划是本科大…

8代主板装服务器系统,微星B365主板搭配intel 8代cpu安装win7及bios设置教程

就在前不久发布华硕和华擎分别发布了b365主板&#xff0c;近期微星也发布了b365主板&#xff0c;有很多使用微星主板的网友问&#xff0c;微星B365主板其搭载intel 酷睿8代cpu可以安装安装win7吗&#xff1f;微星B365主板预装的是win10系统&#xff0c;用户还是喜欢win7系统&am…

【渝粤教育】电大中专计算机职业素养 (12)作业 题库

1.&#xff08; &#xff09;就是职业技能的标准化、规范化、制度化。 A.职业行为 B.职业意识 C.职业道德 D.职业化 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;未作答 2.&#xff08; &#xff09;就是合适的时间、合适的地点、做合适的事 A.职业意识 B.职业习惯…

修订和不变性

这是一个简短的帖子。 我不确定如何启动它。 这是审阅一些现有代码时“为什么我没有想到”的时刻之一。 由于存在NDA&#xff0c;我无法共享实际代码。 它与处理修订有关。 与我最相关的是WordPress&#xff08;WP&#xff09;如何处理博客文章和修订。 在WP中&#xff0c; wp…

[渝粤教育] 西南科技大学 农业推广学 在线考试复习资料

农业推广学——在线考试复习资料 一、单选题 1.“ 百千万”示范是指在村建百亩( )。 A.示范片 B.试验田 C.示范区 D.示范方 2.一个随机区组试验有8个处理,四次重复,误差自由度是( )。 A.27 B.21 C.32 D.28 3.在推广教师的指导下,学员运用已有的知识、经验,从事一定的实践工作…

autowired注入为 mapper为null_兰新高铁为区域经济发展注入活力

央视网消息 &#xff1a;连接甘肃兰州至新疆乌鲁木齐的兰新高铁&#xff0c;是我国“八纵八横”高速铁路网的重要组成部分。开通运营近六年来&#xff0c;兰新高铁已累计运输旅客6760多万人次&#xff0c;在推动地区协调发展&#xff0c;便捷旅客出行等方面发挥了重要作用。乘坐…