使用带有OAuth2的Web应用程序和使用JWT来调用API – WSO2 API Manager
在这篇文章中,我将分享我在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"
}
干杯!
资源:
- http://docs.wso2.org/display/AM150/Invoking+APIs+using+a+Web+App+Deployed+in+WSO2+AS
- http://lalajisureshika.blogspot.com/2013/06/passing-end-user-details-from-client-to.html
- http://asanka.abeysinghe.org/2014/01/oauth-for-application-developer-and.html
翻译自: 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相关推荐
- oauth2和jwt_使用具有OAuth2的Web应用程序和JWT的使用来调用API – WSO2 API Manager
oauth2和jwt 在这篇文章中,我将分享我在WSO2 API管理器(API-M)中针对行业中非常常见且有用的场景的经验和理解. 简要地说明以下流程. 公开了一个API,供应用程序开发人员在API管 ...
- 小程序笔记(9)调用腾讯api获取周边饮食店信息
调用腾讯api获取周边饮食店信息 实现功能 实现流程 基本逻辑实现 开始注册key 开始代码 先配置app.json中的权限获取 index.wxml index.wxss index.jssssss ...
- 新书推荐 |《机器学习即服务:将Python机器学习创意快速转变为云端Web应用程序》...
新书推荐 <机器学习即服务:将Python机器学习创意快速转变为云端Web应用程序> 点击上图了解及购买 谷歌云和Salesforce首选合作伙伴SpringML数据科学副总裁领衔撰写,讲 ...
- web应用程序与web网站的区别
前言: 最近学习了与web编程相关的很多的基础知识,接下将是一系列的基础知识的对比学习,今天先简单的了解一下web应用程序与web网站的区别! 1.编译方式不一样 这个是我认为二者之间最大的区别了,首 ...
- 用 Google Gears 增强您的 Web 应用程序
用 Google Gears 增强您的 Web 应用程序 文档选项 未显示需要 JavaScript 的文档选项 打印本页 将此页作为电子邮件发送 样例代码 2009 年 8 月 20 日 本文将简要 ...
- 在Web应用程序中使用Canvas API
更多HTML 5文章请查阅HTML 6在线网站http://www.html5online.com.cn 本文概述 本文介绍如何在一个Web应用程序中利用HTML 5中的Canvas API创建.编辑 ...
- 带有Gradle的Spring Boot Web应用程序
1.简介 在继续使用Gradle创建演示Spring Boot Web应用程序之前,我假设我们已经准备好使用Gradle设置 . 摇篮设置指南 Gradle官方网站 2.创建演示应用程序 现在我们已经 ...
- 带有Jersey和Spring的RESTful Web应用程序
几个月前,我们的任务是创建一个API,以向第三方开发人员公开我们系统中的某些功能. 我们选择将这些功能公开为一系列REST Web服务. 我开始使用Jersey ,它是JSR 311 (用于Restf ...
- 在15分钟内使用Spring Boot和Spring Security构建一个Web应用程序
"我喜欢编写身份验证和授权代码." 〜从来没有Java开发人员. 厌倦了一次又一次地建立相同的登录屏幕? 尝试使用Okta API进行托管身份验证,授权和多因素身份验证. 开发人员 ...
最新文章
- 改变UITableView的headerView、footerView背景颜色
- 如何查询电脑的文件系统的分类是哪一种?
- 三角剖分(delaunay)拓扑结构 高维近邻
- 面对滚滚而来好政策 安防行业该如何发展
- python 多分类模型优化_【Python与机器学习】:利用Keras进行多类分类
- 三维重建6:绑架问题/SensorFusion/IMU+CV-小尺度SLAM
- 即时大数据流处理=即时风暴
- inline,block,inline-block的区别
- 第三四五章(PTA复习)
- OllyDbg笔记-异常忽略相关设置
- 如何 Scale Up/Down 应用?- 每天5分钟玩转 Docker 容器技术(126)
- SAP License:SAP的公司间销售
- Hive中分组取前N个值
- linux报mce清除不良代码,如何分析系统MCE异常?
- 远程调试运行在Resin上面的Web应用程序
- 声道测试音频_一音成佛的尺八音色,电吹管的单声道和双声道录音对比(2)
- 思科 命令 TFTP
- 目标检测(Object Detection)—— M2Det
- 2015年度精品 最新力作32位和64位xp,win7,win8,win10系统下载(电脑城专用版)
- 微信朋友圈马赛克图片 —— 抓包破解
热门文章
- 权限管理系统2_权限表,权限模块表
- php 向html追加元素,在PHP中存储兄弟元素的属性和内部HTML
- ReviewForJob——深度优先搜索的应用
- RabbitMQ消息
- camel apache_如何使用Apache Camel,Quarkus和GraalVM快速运行100个骆驼
- 程序员面试算法_程序员的前20个搜索和排序算法面试问题
- java分割句子_关于Java的一些句子
- 对象空指针_可选和对象:空指针救星!
- 将Amazon Cognito与单页面应用程序(Vue.js)集成
- spring集成jndi_Spring应用程序与JNDI连接池的集成测试