Giter Club home page Giter Club logo

oauth2.0_demo's Introduction

OAuth2.0

简述步骤

  • 被传递的数据(例如用户的数据)
  • 有一个管理用户数据的服务器(资源服务器)
  • 有一个客户端应用程序,想要访问用户的数据
  • 资源服务器提供一个可访问Api
  • 客户端请求资源服务器,资源服务器进行数据返回(恶意程序访问时,也会进行返回,这样会造成数据泄露
  • 因此我们需要做一个Access Token(预先向客户端应用程序提供“访问令牌”。访问令牌表示所述客户端应用程序已被授予访问用户数据的权限。)
  • 客户端程序在请求时携带Access Token,资源服务器提取请求中的Access Token并确认访问令牌表示客户端应用程序具有访问用户数据的权限,确认后,返回用户数据
  • 要使此机制起作用,必须事先向客户端应用程序提供访问令牌。因此,我们需要有人签发访问令(签发访问令的人被称为“授权服务器”)。
  • 授权服务器生成访问令牌并向客户端应用程序发出访问令牌,客户端应用程序使用访问令牌请求用户的数据。资源服务器从请求中提取访问令牌,确认访问令牌有权访问用户的数据,并将用户的数据返回给客户端应用程序

关键字

  • 资源(Resource) black‘s message list
  • 资源所有者(Resource Owner) black
  • 客户端应用程序(Client)(获取授权服务器的Access Token,并携带在请求中,请求资源服务器)
  • 资源服务器(Resource Server)(从请求头中获取Access Token判断用户是否要获取数据,获取哪部分数据,避免恶意程序进攻)
  • 授权服务器(Authorization Server)(生成Access Token

OAuth2.0客户端一共有4种授权模式

  • 授权码模式(authorization code)
  • 简化模式(implicit)
  • 密码模式(resource owner password credentials)
  • 客户端模式(client credentials

Demo

OAuth2.0登陆Github

参考

The Simplest Guide To OAuth 2.0

OAuth2 协议登陆Github Api

OAuth2 协议登录google Api

OAuth2 协议登录QQ Api

WIKI对OAuth协议的解释

OpenId

概述

OpenID Connect has been developed by extending OAuth 2.0. OpenId是一个以用户为中心的数字身份识别框架,它具有开放、分散、自由等特性。OpenId的创建是基于这样一个概念:我们可以通过URI(或者URL网址)来识别一个网站。同样,我们也可以通过这样的方式来识别一个用户的身份。OpenId系统的身份认证就是通过URI来认证用户身份。目前绝大部分网站都是通过用户名与密码来登录认证用户身份,这就要求大家在每个你要使用的网站上注册一个帐号。如果使用OpenId,你可以在一个提供OpenId的网站上注册一个OpenId,以后你可以使用这个OpenId去登录支持OpenId的网站。这正是一处注册,到处使用的体现。

OpenID相关术语

  • End User:终端用户,使用OP与RP的服务
  • Relying Party依赖方:简称RP,服务提供者,需要OP鉴权终端用户的身份
  • OpenID Provider:OpenID提供者,简称OP,对用户身份鉴权
  • Identifier标识符:标识符可以是一个HTTP、HTTPS或者XRI(可扩展的资源标识)
  • User-Agent:实现了HTTP1.1协议的用户浏览器
  • OP Endpoint URL:OP鉴权的URL,提供给RP使用
  • OP Identifier:OP提供给终端用户的一个URI或者XRI,RP根据OP Identifier来解析出OP Endpoint URL与OP Version
  • User-Supplied Identifier:终端用户使用的ID,可能是OP提供的OpenID,也可以是在RP注册的ID。RP可以根据User-Supplied Identifier来解析出OP Endpoint URL、OP Version与OP_Local Identifer
  • Claimed Identifier:终端用户声明自己身份的一个标志,可以是一个URI或者XRI
  • OP-Local Identifier:OP提供的局部ID

参考

OpenID

Diagrams of All The OpenID Connect Flows

OpenId 和 OAuth的区别

概述

OAuth解决了授权问题。OpenID解决了身份验证问题

OpenID是Authentication

认证就是证明你是谁,你是否是真实存在的,就好像,快递员来给你送快递,让你出示你的身份证,他确定你是本人后,把快递给你,这就是OpenID。

OAuth是Authorization

授权就是确定了你是谁后,又把属于你的东西给了别人

参考

OAuth and OpenID explained with real life examples

Summary

OAuth solves an authorization problem. OpenID solves an authentication problem. The combination of both allows implementing security in a different way. Use scopes to describe one’s permissions, or claims to introduce a policy-based authorization strategy. OAuth and OpenID are modern solutions that require a different mindset. Roles are obsolete. Instead, policies apply to applications and identity. These policies may be applied in authorization servers and in applications. Decide where to implement them based on your security requirements.

What's the difference between OpenID and OAuth?

理解OpenID和OAuth的区别

Demystifying OAuth 2.0 and OpenId Connect (and SAML)

oauth2.0_demo's People

Contributors

crazychenzi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Forkers

hdwt8289

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.