oauth2.0在监控宝项目中的应用一例

本文介绍了Oauth2.0协议的概念及其四种授权模式,并详细解释了Oauth2.0在监控宝API平台上的具体应用过程。
                                云智慧(北京)科技有限公司 邓超

说起oauth2.0,我相信很多人对其已经非常熟悉,并且已经应用在很多开放平台上,如新浪微博开放平台,腾讯微博开放平台等;下面我将我个人对于Oauth2的理解以及Oauth2在监控宝开放平台上的是如何运用的做一下简单的阐述,有说的不到位的地方还望指点。
一、什么是Oauth2.0
官方定义:
OAuth(开放授权)是一个开放标准,允许用户让第三方应用访问该用户在某一网站上存储的私密的资源,而无需将用户名和密码提供给第三方应用。
OAuth允许用户提供一个令牌,而不是用户名和密码来访问他们存放在特定服务提供者的数据。每一个令牌授权一个特定的网站在特定的时段内访问特定的资源。这样,OAuth让用户可以授权第三方网站访问他们存储在另外服务提供者的某些特定信息,而非所有内容。
OAuth 2.0是OAuth协议的下一版本,但不向下兼容OAuth 1.0。OAuth 2.0关注客户端开发者的简易性,同时为Web应用,桌面应用和手机,和起居室设备提供专门的认证流程。
个人理解:
Oauth2.0就是一个互联网标准协议(基于https) ,可以让用户来实现跨平台数据共享。
比如有2个平台A和B,在A平台上有一些数据资源,现在B平台想拿到A平台上的某些数据资源,如果此时A平台支持Oauth2协议,那么B平台就可以通过协议向A平台请求相应的数据资源应用的B平台上。
二、Oauth的认证过程
OAuth在”客户端”与”资源服务端”之间,设置了一个授权层(authorization layer)。其过程如图(来自RFC 6749 ):
这里写图片描述

(A)“客户端”向“资源所属者”发出授权请求
(B)“资源所属者”同意给“客户端”授权
(C)“客户端”获得授权后向“认证服务端”请求令牌
(D)“认证服务端”向“客户端”发放令牌(Access Token)
(E)“客户端”通过令牌向“资源服务端”请求资源
(F)“资源服务端”确认令牌无误,向“客户端”发放资源
从以上步骤可以看出,“客户端”想拿到资源,关键点在于“资源所属者”的授权,只有拿到了授权,才可以进行接下来的步骤。
三、Oauth2.0的授权模式
OAuth 2.0定义了四种授权方式:
 A、授权码模式(authorization code)
授权码模式(authorization code)的特点就是通过客户端的后台服务器,与”服务提供商”的认证服务器进行互动。

 B、简化模式(implicit)
简化模式(implicit grant type)不通过第三方应用程序的服务器,直接在 浏览器中向认证服务器申请令牌,跳过了”授权码”这个步骤。所有步骤在浏览器中 完成,令牌对访问者是可见的,且客户端不需要认证。

 C、密码模式(resource owner password credentials)
密码模式(Resource Owner Password Credentials Grant)中,用户向 客户端提供自己的用户名和密码。客户端使用这些信息,向”服务商提供商”索要授 权。

 D、客户端模式(client credentials
客户端模式(Client Credentials Grant)指客户端以自己的名义,而不是 以用户的名义,向”服务提供商”进行认证。

四、Oauth2在监控宝API平台上的运用
 目前监控宝的API平台只对监控宝企业用户开发,而不对所有监控宝用户开发。基于这种情况,Oauth的密码授权模式比较适合(注:通过账号和密码,平台就可以认证是否为监控宝企业用户,从而来判断是否给予授权),所以我们果断采用了这种授权方式。

监控宝API平台简化了授权过程,平台将每一个企业账号当做一个客户端,并自动为其生成一个唯一的授权标识,所以每一个客户端可以直接向平台认证服务端请求令牌,然后通过令牌向平台资源服务端请求资源。如图(监控宝API平台认证过程):

这里写图片描述
关于监控宝API平台请具体参考:
http://www.jiankongbao.com/common/api_interface

关于作者:
邓超,云智慧软件开发工程师,2010年毕业于秦皇岛燕山大学,2012年初加入云智慧(北京)科技有限公司。目前主要负责监控宝产品架构的优化与研发。

基于51单片机,实现对直流电机的调速、测速以及正反转控制。项目包含完整的仿真文件、源程序、原理图和PCB设计文件,适合学习和实践51单片机在电机控制方面的应用。 功能特点 调速控制:通过按键调整PWM占空比,实现电机的速度调节。 测速功能:采用霍尔传感器非接触式测速,实时显示电机转速。 正反转控制:通过按键切换电机的正转和反转状态。 LCD显示:使用LCD1602液晶显示屏,显示当前的转速和PWM占空比。 硬件组成 主控制器:STC89C51/52单片机(与AT89S51/52、AT89C51/52通用)。 测速传感器:霍尔传感器,用于非接触式测速。 显示模块:LCD1602液晶显示屏,显示转速和占空比。 电机驱动:采用双H桥电路,控制电机的正反转和调速。 软件设计 编程语言:C语言。 开发环境:Keil uVision。 仿真工具:Proteus。 使用说明 液晶屏显示: 第一行显示电机转速(单位:转/分)。 第二行显示PWM占空比(0~100%)。 按键功能: 1键:加速键,短按占空比加1,长按连续加。 2键:减速键,短按占空比减1,长按连续减。 3键:反转切换键,按下后电机反转。 4键:正转切换键,按下后电机正转。 5键:开始暂停键,按一下开始,再按一下暂停。 注意事项 磁铁和霍尔元件的距离应保持在2mm左右,过近可能会在电机转动时碰到霍尔元件,过远则可能导致霍尔元件无法检测到磁铁。 资源文件 仿真文件:Proteus仿真文件,用于模拟电机控制系统的运行。 源程序:Keil uVision项目文件,包含完整的C语言源代码。 原理图:电路设计原理图,详细展示了各模块的连接方式。 PCB设计:PCB布局文件,可用于实际电路板的制作。
【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开研究,重点进行了系统建模与控制策略的设计与仿真验证。通过引入螺旋桨倾斜机构,该无人机能够实现全向力矢量控制,从而具备更强的姿态调节能力和六自由度全驱动特性,克服传统四旋翼欠驱动限制。研究内容涵盖动力学建模、控制系统设计(如PID、MPC等)、Matlab/Simulink环境下的仿真验证,并可能涉及轨迹跟踪、抗干扰能力及稳定性分析,旨在提升无人机在复杂环境下的机动性与控制精度。; 适合人群:具备一定控制理论基础和Matlab/Simulink仿真能力的研究生、科研人员及从事无人机系统开发的工程师,尤其适合研究先进无人机控制算法的技术人员。; 使用场景及目标:①深入理解全驱动四旋翼无人机的动力学建模方法;②掌握基于Matlab/Simulink的无人机控制系统设计与仿真流程;③复现硕士论文级别的研究成果,为科研项目或学术论文提供技术支持与参考。; 阅读建议:建议结合提供的Matlab代码与Simulink模型进行实践操作,重点关注建模推导过程与控制器参数调优,同时可扩展研究不同控制算法的性能对比,以深化对全驱动系统控制机制的理解。
<think> 我们正在讨论SAP PI/PO集成金蝶并使用OAuth2.0认证的解决方案。 由于这是一个具体的技术集成问题,我们需要考虑以下几个方面: 1. SAP PI/PO作为中间件,如何与金蝶系统进行通信。 2. 金蝶系统如果提供了OAuth2.0认证的接口,那么SAP PI/PO需要配置OAuth2.0客户端流程。 3. 通常,OAuth2.0流程需要获取访问令牌(access token),然后使用该令牌调用金蝶的API。 在SAP PI/PO中,我们可以通过以下步骤实现: 步骤1:在SAP PI/PO中配置OAuth2.0客户端 - 需要创建OAuth2.0的客户端配置,包括客户端ID、客户端密钥、授权服务器URL、令牌端点URL等。 - 根据金蝶提供的OAuth2.0授权类型(如客户端凭证模式、授权码模式等)进行配置。 步骤2:在集成流程中获取访问令牌 - 使用SAP PI/PO的OAuth2.0适配器(如果支持)或者通过HTTP适配器调用金蝶的令牌端点获取访问令牌。 - 对于客户端凭证模式(client credentials),通常只需要客户端ID和客户端密钥即可获取令牌。 步骤3:使用访问令牌调用金蝶API - 在调用金蝶的API时,将获取到的访问令牌放在HTTP请求头的Authorization字段中(通常为Bearer令牌)。 步骤4:处理令牌的刷新 - 访问令牌通常有过期时间,因此需要处理令牌的刷新。可以在令牌过期前刷新令牌,或者当收到401未授权响应时重新获取令牌。 由于SAP PI/PO的具体配置可能因版本而异,以下是一个大致的配置流程: 示例配置(以客户端凭证模式为例): 1. 在SAP PI/PO的通信通道中,选择发送方或接收方通道(根据你的场景,可能是发送到金蝶,所以是发送方通道)。 2. 在通道的“安全”选项卡中,选择“OAuth 2.0”作为认证方式。 3. 配置OAuth2.0的参数: - Token Endpoint: 金蝶提供的获取令牌的URL - Client ID: 在金蝶注册应用时获得的客户端ID - Client Secret: 对应的客户端密钥 - Grant Type: 选择“Client Credentials”(如果金蝶支持这种模式) 4. 配置其他必要的参数,如作用域(Scope)等。 如果金蝶使用的是其他授权模式(如密码模式、授权码模式),则配置会有所不同。 注意:如果SAP PI/PO的版本较旧,可能没有内置的OAuth2.0适配器支持,那么就需要通过编程的方式(如使用Java映射或XSLT映射)来获取令牌,并在HTTP头中添加令牌。 在这种情况下,可以这样处理: 1. 使用一个HTTP发送通道调用金蝶的令牌端点,获取令牌(使用HTTP基本认证,将客户端ID和密码作为基本认证头,或者在请求体中发送)。 2. 解析令牌响应(通常是JSON格式),提取访问令牌。 3. 然后,在调用金蝶业务API时,将令牌添加到HTTP头中。 这个过程可能需要两个步骤:第一次调用获取令牌,第二次调用业务API。我们可以使用SAP PI/PO的异步流程(例如,在第一个接收步骤后,调用令牌接口,然后使用企业JavaBean(EJB)或Groovy脚本存储令牌,再调用业务接口)或者使用循环上下文(Loop Context)来组合这两个调用。 然而,更常见的做法是使用一个自定义的SOAP头或HTTP头来传递令牌。在SAP PI/PO中,我们可以通过消息映射或通道配置来实现。 由于这是一个复杂的过程,建议查阅SAP PI/PO和金蝶的官方文档,特别是关于OAuth2.0集成的部分。 下面是一个示例流程的伪代码表示: 步骤1:获取令牌 - 使用HTTP适配器发送POST请求到金蝶的令牌端点 * 请求头: Content-Type: application/x-www-form-urlencoded * 请求体: grant_type=client_credentials&client_id=your_client_id&client_secret=your_client_secret - 解析响应,获取access_token字段 步骤2:调用金蝶业务API - 使用HTTP适配器发送请求到金蝶的业务端点 * 请求头: Authorization: Bearer <access_token> 在SAP PI/PO中,我们可以使用两个连续的集成流程(Integration Flow)来实现,或者在一个流程中使用两个发送步骤(但需要中间存储令牌)。 另外,可以考虑使用SAP PI/PO的“Partner Directory”来存储和刷新令牌,以避免每次调用都重新获取令牌。 由于具体实现细节较多,这里只能提供大致思路。建议参考SAP官方文档中的OAuth2.0配置指南。 生成相关问题: 1. 在SAP PI/PO中如何配置OAuth2.0客户端凭证模式? 2. 如果金蝶使用的是授权码模式,SAP PI/PO如何实现? 3. 如何处理OAuth2.0访问令牌的刷新机制? 4. 在SAP PI/PO中如何解析JSON响应(令牌响应)? 5. 如何将OAuth2.0令牌添加到HTTP请求头中? </think> ### SAP PI/PO集成金蝶系统使用OAuth2.0认证的解决方案 在SAP PI/PO(Process Integration/Process Orchestration)中集成金蝶系统并通过OAuth2.0认证,需通过以下核心步骤实现: --- #### **解决方案步骤** 1. **OAuth2.0参数配置** - 在金蝶云平台注册应用,获取`client_id`、`client_secret`、`token_endpoint`(如`https://api.kingdee.com/auth/token`) - 确定授权类型:推荐**Client Credentials Grant**(服务端间通信)或**Authorization Code Grant**(需用户交互) - 配置权限范围(Scopes),如`accounting:read` $$ \text{Token\_Request} = \text{POST}\ \left\{ \begin{array}{c} \text{grant\_type=client\_credentials}\\ \text{client\_id=CLIENT\_ID}\\ \text{client\_secret=CLIENT\_SECRET}\\ \text{scope=SCOPE} \end{array} \right\} $$ 2. **SAP PI/PO适配器配置** - **发送方通道**(调用金蝶API): - 协议类型:`HTTP` 或 `REST` - 安全配置: ```plaintext Authentication: OAuth2.0 Token Endpoint: [金蝶token_url] Client Credentials: [client_id + client_secret] Token Placement: Header (Bearer) ``` - **令牌刷新机制**: 通过PI的**Token Management**模块自动刷新过期令牌,避免401错误[^1]。 3. **令牌获取与传递** - 首次调用前执行令牌请求: ```http POST /auth/token HTTP/1.1 Content-Type: application/x-www-form-urlencoded grant_type=client_credentials&client_id=YOUR_CLIENT_ID&client_secret=YOUR_SECRET ``` - 在PI的消息映射中提取`access_token`,注入后续请求头: $$ \text{Authorization: Bearer}\ \text{access\_token} $$ 4. **异常处理** - 监控HTTP状态码(401/403),触发令牌刷新流程 - 使用PI的**Retry Mechanism**处理临时性错误 - 日志记录:通过SXMB_MONI记录令牌生命周期及API调用详情 --- #### **关键注意事项** - **证书管理**:若金蝶使用HTTPS,需将金蝶CA证书导入PI的Keystore(事务代码`STRUST`) - **安全增强**: - 敏感参数(client_secret)存储在PI的**Secure Parameter Store** - 启用JWT令牌签名验证(若金蝶支持) - **性能优化**: 缓存令牌至PI的**Shared Memory**,减少频繁请求[^2] --- #### **参考文档** - 金蝶开放平台:[OAuth2.0接入指南](https://open.kingdee.com/docs) - SAP Note: [2925125](https://me.sap.com/notes/2925125) - OAuth2.0 in PI/PO - 《SAP PO Cookbook》Chapter 12:REST Adapter Security ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值