、认证方式有三种

Oauth2.0,

Token-based

http/windows

二、用户登录与应用登录区别

两者区别在于:当用户登录时,服务器端平台是否直接识别登录信息和验证登录信息。

应用登录是间接认证,可以在应用登录的方法中增加额外的认证逻辑,如clientId、Ip等等。应用登录是服务器端验证,避免前端认证信息被盗用。

三、注册应用程序

http://doc.arcgis.com/en/arcgis-online/share-maps/add-items.htm#ESRI_SECTION2_20AF85308FD548B5ADBAE28836F66D3F

注册程序后会出现

四、oauth2.0

(1)oauth2.0+user登录 ,只需要注册应用中的appid。 IdentityManager来管理认证信息。

例子参见anjiangis/portal_oauth_popup.html

var info = new ArcGISOAuthInfo({
  appId: "<this is where your app id would go>",
  popup: true
});
esriId.registerOAuthInfos([info]);

(2)oauth2.0+app 需要AppID 和AppSecret

利用注册应用中的登录,注册应用可以自主添加登录认证方法(如ip)。

参考

https://developers.arcgis.com/javascript/3/jshelp/tutorial_sharing_maps_secure_layers.html

代码等在anjiangis文件夹下的traffic和resource-proxy-master。

这个例子是结合资源代理,无需登录。比较迷糊。

五、token

(1)token+user login

例子参见anjiangis/portal_oauth_popup.html

登录获取token,下次请求携带token的示例

https://servicesbeta.esri.com/security/index.html

(2)token+app login

注册应用在服务器端管理token,与资源代理合用。

四、示例代码

Oauth2.0+user login

https://developers.arcgis.com/javascript/3/jssamples/portal_oauth_inline.html

cookie保存凭证信息

https://developers.arcgis.com/javascript/3/jssamples/widget_identitymanager_client_side.html

代理方式

https://developers.arcgis.com/javascript/3/jshelp/tutorial_sharing_maps_secure_layers.html

proxy for dotnet 代码下载及使用教程

https://github.com/Esri/resource-proxy/blob/master/DotNet/README.md

token获取和利用方式

https://developers.arcgis.com/documentation/core-concepts/security-and-authentication/accessing-arcgis-online-services/

五、自身实践

采用简单的oauth2.0+app方式。 需要AppID 和AppSecret

(1)将需要保护的内容/服务改为公开为某个用户或组织

(2)在gisonline或者portal上添加应用程序,并查看app的AppID 和AppSecret。此信息是用来给客户端访问,获取token的,该token就可以访问该用户下的其他受保护内容/服务。

(3)用postman测试下,能否登录成功,获取token.

(4)请求服务时携带token即可

token = "Z-tB9aDlY9Lzp9bJOZiRMLhqnCis1……aorCzVs2PUg5gIz-3crqTwGmQ..";

var fUrl = "https://services8.arcgis.com……/arcgis/rest/services/enterprise/FeatureServer/0?token=" + token;

var featureLayer = new FeatureLayer({

url: fUrl

});

map.add(featureLayer);

oauth2.0+app方式 webgis 授权的更多相关文章

  1. OAuth2.0实战之微信授权篇

    微信开发三大坑: 微信OAuth2.0授权 微信jssdk签名 微信支付签名 本篇先搞定微信OAuth2.0授权吧! 以简书的登陆页面为例,来了解一下oauth2.0验证授权的一些背景知识: 1) 传 ...

  2. iOS OAuth2.0认证和SSO授权

    OAuth2.0和SSO授权   一.OAuth2.0授权协议 一种安全的登陆协议,用户提交的账户密码不提交到本APP,而是提交到授权服务器,待服务器确认后,返回本APP一个访问令牌,本APP即可用该 ...

  3. OAuth2.0授权和SSO授权

    一. OAuth2.0授权和SSO授 1. OAuth2.0 --> 网页 --> 当前程序内授权 --> 输入账号密码 --> (自己需要获取到令牌, 自己处理逻辑) 授权成 ...

  4. Spring Boot 2.0 利用 Spring Security 实现简单的OAuth2.0认证方式2

    0.前言 经过前面一小节已经基本配置好了基于SpringBoot+SpringSecurity+OAuth2.0的环境.这一小节主要对一些写固定InMemory的User和Client进行扩展.实现动 ...

  5. OAuth2.0的四种授权模式

    1.什么是OAuth2 OAuth(开放授权)是一个开放标准,允许用户授权第三方移动应用访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方移动应用或分享他们数据的所有内容,OA ...

  6. Spring Boot 2.0 利用 Spring Security 实现简单的OAuth2.0认证方式1

    0. 前言 之前帐号认证用过自己写的进行匹配,现在要学会使用标准了.准备了解和使用这个OAuth2.0协议. 1. 配置 1.1 配置pom.xml 有些可能会用不到,我把我项目中用到的所有包都贴出来 ...

  7. Apache Oltu 实现 OAuth2.0 服务端【授权码模式(Authorization Code)】

    要实现OAuth服务端,就得先理解客户端的调用流程,服务提供商实现可能也有些区别,实现OAuth服务端的方式很多,具体可能看 http://oauth.net/code/ 各语言的实现有(我使用了Ap ...

  8. API开放平台接口设计-------基于OAuth2.0协议方式

    1,简介OAuth http://www.ruanyifeng.com/blog/2019/04/oauth_design.html OAuth 是什么? http://www.ruanyifeng. ...

  9. 淘宝账号基于OAuth2.0的登录验证授权登陆第三方网站

    首先得有一个注册的appkey和App Secret   该流程分三个步骤: 第一步:通过用户授权获取授权码Code: 第二步:用上一步获取的Code和应用密钥(AppSecret)通过Https P ...

随机推荐

  1. Flink – Stream Task执行过程

    Task.run if (invokable instanceof StatefulTask) { StatefulTask op = (StatefulTask) invokable; op.set ...

  2. 转:JDBC中关于PreparedStatement.setObject的一些细节说明

    原文地址:https://blog.csdn.net/zhiyangxuzs/article/details/78657235 JDBC中PreparedStatement.setObject(ind ...

  3. omitting directory何意

    使用cp命令拷贝目录时,若该目录下有子目录 需加参数 cp -r 加目标目录到路径下

  4. navicat新建用户,并赋予权限

    一.新建用户 二.设置主机和密码 主机%的意思是允许用户本地登入和远程登入. 三.选择表或者视图 右键,选择设置权限 四. 选择添加权限. 五. 选择用户以及Select  和  Show View ...

  5. sed命令 windows与linux换行

    Linux的Bash命令中有一个sed操作,SSD的create_list.sh中有用到这个操作: 结合着下面这个解释: 也就是删除所有行里面的以VOC2007/Annotations/(这里的\代表 ...

  6. 前端 HTML标签属性

    HTML标签可以设置属性,如下: <div id="i1">这是一个div标签</div> <p class='p1 p2 p3'>这是一个段落 ...

  7. 对比库表结构,生成SQL

    网上找了一圈对比库的工具,能手工生成差别的SQL的工具没有,改造了一下网上的sql 1, 获取字段名的类型 create FUNCTION [dbo].[getColType](@tab varcha ...

  8. Delphi INI文件保存与读取

    //需要引用IniFiles uses system.IniFiles; //保存INI配置文件 procedure TForm1.btnSaveClick(Sender: TObject); var ...

  9. PXE安装操作系统

    TFTP服务 用PXE安装操作系统依赖于DHCP服务和TFTP服务 网卡一般都内置的TFTP客户端的程序 systemctl enable tftp     systemctl enable  dhc ...

  10. ORACLE-osi分层模型.md

    一. 标准化组织ISOISO:国际标准化组织   ( International Organization for Standardization )OSI:开放系统互联   ( open syste ...