`
sillycat
  • 浏览: 2551016 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

Secure REST API and Mobile(1)Document Read and Understand OAUTH2

 
阅读更多
Secure REST API and Mobile(1)Document Read and Understand OAUTH2

I used to use OAuth1 before, but it seems that it is different from OAuth2.

1. Introduction on OAuth2
Resource Owner  — User
Client — App
Authorization Server
Resource Server — API

Client should be registered first.
Client Registration
Client ID
Client Secret
Redirect URI

Public V.S. Confidential Client
Confidential - Server-side Application,  send Client ID+Secret to Auth.Server
Public - Moible App/ JavaScript App

Endpoints
Authorization Endpoint — User authorize — Web Page — Grant — 302 to Client Redirect URI
Token Endpoint — Client fetch the token - JSON API - fetch the Token with Grant
Redirection Endpoint — Client receive the info

SSL, Auth.Server endpoints must be HTTPS, Client Redirection Endpoint is not.

Resource Server
Client use Token to fetch the info from Resource Server - Password-Free API

There are several flows (Taobao Top as example)
user       ———    browser ———— ———— app ————— TOP
                                get app URL ——————>
                                 <———  send 302 to Oauth
                                GET /authorize — — ——————————>
Logon and Grant —————————————————————>
                                <— —————— ——— redirect to redirect_URI
                                get redirect URI ————>
                                                                        POST token————>
                                                                        <—— — Access Token


2. Public Clients - Implicit Grant Flow
only for public client, Android App, iOS App, Javascript App.
Grant will not be transferred to Client, directly give Token
No Token Endpoint
Token has short lifetime
No Refresh Token

OAuth2 Provider
Facebook — Auth Code, Implicit, Client Cred.
Github — Auth Code, Password
Twitter — Client Cred.
Google — Auth Code, Implicit
Microsoft — Auth Code, Implicit
Dropbox — Auth Code, Implicit
Amazon — Auth Code, Implicit
Bitly — Auth Code, Password
Sina weibo — Auth Code
Douban — Auth Code, Implicit
BOX — Auth Code
Basecamp — Auth Code

3. Try to secure our API
It seems to me that we need to use other provide for authentication, we need to do the authorization ourselves.

Next step I will investigate PHP codes from our company, hello.js and some customized projects.
http://adodson.com/hello.js/

https://github.com/tcompiegne/oauth2-resource-server-samples
https://github.com/tcompiegne/oauth2-server
https://github.com/tcompiegne/oauth2-client-samples

References:
OAuth
http://sillycat.iteye.com/blog/1265917 protocol and the example
http://sillycat.iteye.com/blog/1265918 sample provider
http://sillycat.iteye.com/blog/1265922 sample provider
http://sillycat.iteye.com/blog/1265923 all about the protocol

OAuth2
http://oauth.net/2/

http://www.ruanyifeng.com/blog/2014/05/oauth_2_0.html

Very good MIT Library
https://github.com/MrSwitch/hello.js
http://adodson.com/hello.js/

http://security.stackexchange.com/questions/67343/secure-rest-api-and-single-page-app-by-using-external-oauth-2-authorization-code

example
https://github.com/jcleblanc/oauth

OpenId
http://sillycat.iteye.com/blog/1004721
http://sillycat.iteye.com/blog/1004723
http://sillycat.iteye.com/blog/1543234
http://sillycat.iteye.com/blog/1543929
http://sillycat.iteye.com/blog/1543974

oauth provider
https://oauth.io/providers

powerful OAUTH2 client
http://adodson.com/hello.js/

OAUTH2 providers
https://github.com/tcompiegne/oauth2-resource-server-samples
https://github.com/tcompiegne/oauth2-server
https://github.com/tcompiegne/oauth2-client-samples

分享到:
评论

相关推荐

    yii2-oauth2-rest-template, 带有OAuth2服务器的Yii2 REST API 模板.zip

    yii2-oauth2-rest-template, 带有OAuth2服务器的Yii2 REST API 模板 在 Yii2上,使用OAuth2服务器的 REST API 应用程序。这是一个 Yii2 Rest应用程序模板,配置了OAuth2服务器( 使用 ...

    arcgis server rest api

    2. **REST API简介** REST(Representational State Transfer)是一种网络应用程序的设计风格和开发方式,基于HTTP协议,提供了创建、读取、更新和删除(CRUD)资源的能力。ArcGIS Server REST API就是利用这种设计...

    H3C CAS REST API接口

    REST(Representational State Transfer)API是H3C CAS系统提供的一种接口方式,用于允许外部应用程序与CAS系统进行交互,实现系统的集成和二次开发。通过REST API,开发者可以远程操作和管理H3C CAS中的各种资源,...

    odoo rest api

    1. **认证**:访问Odoo REST API通常需要认证,这可以是Basic Auth(基础认证)或者OAuth2。基础认证通过在HTTP头中添加Authorization字段,值为"Basic "加上Base64编码的用户名和密码。 2. **URL结构**:API请求的...

    SFDC rest API document

    ### Salesforce REST API 知识点详解 #### 一、引言与概述 Salesforce REST API 是一种基于 HTTP 协议的编程接口,它允许开发者通过简单、标准的方式访问 Salesforce 数据和服务。该文档版本为 32.0(Winter ’15...

    Python库 | django-rest-framework-social-oauth2-1.0.1.tar.gz

    **Python库 django-rest-framework-social-oauth2-1.0.1** `django-rest-framework-social-oauth2` 是一个基于 Django Rest Framework 的社交认证扩展库,主要用于实现 OAuth2 身份验证流程。这个库使得 Django ...

    spring-security-oauth2-2.3.5.RELEASE-API文档-中文版.zip

    赠送原API文档:spring-security-oauth2-2.3.5.RELEASE-javadoc.jar; 赠送源代码:spring-security-oauth2-2.3.5.RELEASE-sources.jar; 赠送Maven依赖信息文件:spring-security-oauth2-2.3.5.RELEASE.pom; 包含...

    跨平台的 REST API 客户端 Insomnia

    **跨平台的 REST API 客户端 Insomnia** Insomnia是一款功能强大的跨平台REST API测试和调试工具,专为开发者设计,便于与Web服务进行交互。它基于Electron框架构建,这意味着它能够运行在Windows、MacOS和Linux等...

    Python-微软RESTAPI的指南

    2. 示例代码:展示Python与微软REST API交互的实例。 3. 身份验证:详细解释OAuth2.0和Azure AD的实现过程。 4. 错误处理:如何处理和报告API请求中的错误。 5. 最佳实践:推荐的编码和测试策略,以优化API的使用...

    spring-security-oauth2-rest:使用Spring Security Oauth2保护REST API

    Oauth 2演示 Spring OAuth 2.0演示 Oauth2刷新令牌请求 http : // localhost:8080/oauth2/oauth/token?grant_type=password&client_id=rajith-client-id&client_secret=12345&username=rajith&password=password { ...

    C#调用Rest API.7z

    在“C#调用Rest API.7z”压缩包中,可能包含了一个示例项目“Restful-Service-And-Restful-Client-master”,该示例展示了如何在C#客户端中使用REST API。这个项目可能包括了GET和POST请求的示例代码,以及如何处理...

    RestAPI.rar

    2. **JSON数据格式**:REST API通常使用JSON(JavaScript Object Notation)作为数据交换格式,因为JSON轻量级、易读写且支持多种语言。例如,一个用户资源可能表示为: ``` { "id": 1, "name": "张三", "email...

    HTTP-API_restAPI_iot_httpapi_iiot_agneyaslabs_

    1. **REST API基础**:REST架构风格的核心概念包括资源、URI(统一资源标识符)和表示。每个资源都有一个唯一的URI,通过HTTP方法(GET、POST、PUT、DELETE等)来操作。GET用于获取资源,POST用于创建新资源,PUT...

    simple-api-oauth2:使用Oauth2的简单REST API服务器,该服务器通过Node + Express构建

    具有Oauth2的简单API服务器使用Oauth2进行身份验证的简单REST API服务器。安装npm install 用法启动服务器node server 创建用户要求 curl -X POST -H "Content-Type: application/json" -d '{"username":"admin", ...

    odoo rest_api

    4. **数据操作**:通过REST API,可以执行CRUD(Create, Read, Update, Delete)操作。GET请求用于获取数据,POST请求用于创建新记录,PUT请求用于更新现有记录,DELETE请求用于删除记录。 5. **JSON格式**:API...

    webapi基于Owin中间件的oauth2.0身份认证

    1. **安装Owin中间件**:在ASP.NET Web API项目中,首先需要通过NuGet包管理器安装`Microsoft.Owin.Security.OAuth`和`Microsoft.Owin.Security.Cookies`,这两个包分别用于OAuth2.0授权和Cookie认证。 2. **配置...

    rest api 接口测试工具

    REST API(Representational State Transfer Application Programming Interface)接口已经成为现代Web服务和应用程序开发的重要组成部分。它是一种轻量级、基于HTTP协议的API设计风格,用于在客户端和服务器之间...

    netcore+webapi+jwt+oauth2+swagger的例子

    解决方案包含五个项目 ...3.WebApiTest.ApiOauth2:.Net4.5+oauth2+swagger编写的接口 4.WebApiTest.ApiController:.Net4.5+jwt+swagger编写的接口 5.WebApiTest.MVC:在mvc中使用webapi(WebApiTest.ApiOauth2)

    QT调用百度语音REST API实现语音识别

    QT调用百度语音REST API实现语音识别是一种将用户语音转换为文本的技术,广泛应用于智能交互、语音命令控制等领域。在本教程中,我们将探讨如何利用QT这一跨平台的C++开发框架,结合百度语音API来完成这个过程。 ...

Global site tag (gtag.js) - Google Analytics