之前在SAP系统(ABAP)上实现了和ServiceNow的OAuth通信(ServiceNow是一个IT服务系统),本文将会介绍具体实现步骤,考虑到ServiceNow在国内用的公司少,我会把重点放在SAP部分。另外建议去了解一下OAuth标准协议,这样可以更好地理解OAuth的整体流程,也对以后在其他系统上实现OAuth有帮助。
我先用简单的文字描述一下OAuth的使用场景,A(客户端)访问B(服务器),一种比较普遍的方式是A用B的用户名和密码访问,这样有一个问题是,当A不是可信任系统时,把用户名及密码告诉A会有安全风险。而使用OAuth的话,A首先需要获得B的授权,获得一个token(令牌),之后根据这个token访问B,这样A就不需要B的用户名和密码了。这里举一个微信授权的使用场景,平时我们在访问一些小程序的时候,会弹出一个框让我们确定是否允许小程序使用微信的头像及昵称等信息,这个就是授权,当你同意的时候,微信会授予小程序一个token,之后小程序根据token就可以访问微信里的头像等资料,而不需要微信的用户名及密码。需要注意的是,OAuth侧重的是授权(Authorization),而非认证(Authentication)。
先讲SAP系统作为客户端,ServiceNow作为服务器的场合。在讲具体实现步骤之前,首先分析下在当前使用场景中,OAuth的各个角色分别是什么,虽然这不是具体实现的一部分,但是有助于理解OAuth,
Resource Owner: ServiceNow user
Resource Server: ServiceNow
Client: Postbox
Authorization Server: ServiceNow
Authorization Grant: Authorization Code
相关的权限
ServiceNow: admin
相关的服务或者配置