身份验证(令牌)
HTTP: 是一种没有状态的协议,也就是它并不知道是谁是访问应用。这里我们把用户看成是客户端,客户端使用用户名还有密码通过了身份验证,不过下回这个客户端再发送请求时候,还得再验证一下。
Session:当用户请求登录的时候,如果没有问题,我们在服务端生成一条记录,这个记录里可以说明一下登录的用户是谁,然后把这条记录的 ID 号发送给客户端,客户端收到以后把这个 ID 号存储在 Cookie 里,下次这个用户再向服务端发送请求的时候,可以带着这个 Cookie ,这样服务端会验证一个这个 Cookie 里的信息,看看能不能在服务端这里找到对应的记录,如果可以,说明用户已经通过了身份验证,就把用户请求的数据返回给客户端。
Token:
使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是这样的:
-
客户端使用用户名跟密码请求登录
-
服务端收到请求,去验证用户名与密码
-
验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
-
客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里或者 Local Storage 里
-
客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
-
服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向客户端返回请求的数据
Server 安全机制:
基于角色的访问控制体系:
角色:在访问设置了权限控制的服务时,我们只需要提供用户名密码,ArcGIS Server将找到其对应的角色,验证该角色是否对服务资源具备访问权限。
1、user
最普通的用户角色,能够访问已被授权访问的服务,通常在应用程序中使用该类角色。
2、publisher
能够访问所有的服务,发布新服务,管理已有的服务。此外还能够查看日志、创建缓存,部署/卸载SOEs,也可以查看用户、角色信息和存储配置
3、Administrator
Server最高管理员,拥有不受限制的完整权限,考虑到系统安全,应尽量减少这里角色的用户,并务必谨慎使用。
用户:
用户必须属于某类角色,ArcGIS Server默认只有一个账户,即主站点管理员。在实际应用中,需要根据部门资源分配情况,以及项目管理情况来划分用户。通常Administrator账户只有一两个,Publisher可根据需要适当设置几个,但也不宜太多;User账户则可根据实际情况进行设置,没有数量的限制。
权限:
权限是赋予给角色对资源的访问能力,权限设置可以对ArcGIS Server服务,也可以对服务文件夹进行设置。如果对文件夹设置权限,则文件夹中的服务自动继承权限;如果是对文件夹中的服务设置权限,则将覆盖从文件夹中继承的权限。
Token:在访问这些经过权限设置的服务时,会有用户认证和权限验证两个主要的步骤:
- 用户认证:判断用户输入的用户名是否存在,密码是否正确;
- 权限验证:判断该用户是否对请求的资源具有访问权限。
认证的方式有两种:基于ArcGIS Token的认证和Web服务器认证
申请Token:
可以通过http://myserver:6080/arcgis/admin/generateToken或http://myserver:6080/arcgis/tokens申请