Git Product home page Git Product logo

idp-sso's Introduction

统一认证系统idp 1.0.0v

作者:Mr-GaoSai

目录

  • 系统简介
  • 单点登录系统介绍
  • 数据建模文档
  • 类编写文档
  • 应用签名文档

系统简介

  1. idp为认证中心
  2. sp为基于idp的一个demo

一. 单点登录系统介绍

单点登录个人认为可以概括为两种理解
1. 针对于手机APP,一个账号只能在一个APP上登录。就比如说手机QQ,当账号在另一个手机
上登录后,上一个账号会在另一个手机上异地登陆。
2. 针对于网站系统,针对于多个web应用,比如淘宝和天猫,两个web应用,但是这两个应用共享
同一个账号体系。在A应用登录后,B应用无需再次登陆。此时用专业术语讲解,有多个sp应用,
和一个idp统一认证应用。多个sp应用有下面三种情况

	a. 在同一个域名下的不同站点
		www.domain.com/site1
		www.domain.com/site2
	b. 同一个域但是不同的子域
		sub1.domain.com
		sub2.domain.com
	c. 不同域之间
		www.domain1.com
		www.domain2.com

二. 数据建模文档

一览:用户表,登录日志表,应用表,验证码表

	用户表(主键,用户名,密码,创建时间)
	登录日志表(主键,时间,用户id,备注)
	应用表(主键,应用名称,appkey,appsecret,登录地址,注销地址)
	验证码表(主键,手机号,验证码)

三. 类编写文档

Oauth权限类
	登录方法
	注销方法
Cert颁发票据类
	颁发方法
Config配置类
	全局变量定义
AppUtil工具类
	pwd密码加密方法(md5加盐)
	sign应用签名方法

四. 应用签名文档

每个sp应用都需要配置4个参数,appkey,appsecret,登录地址,注销地址
主要用在:用户登录成功后,idp端加密字段,跳转到sp的登录地址,sp解析加密字段,判断是否
从idp中跳转过来。防止黑客用不法手段登录sp应用。

加密前字段主要有两个ttl和uid。加密后字段为ttl,uid和sign。
这个签名文档主要介绍sign的生成办法。

1、构造验证参数字符串。

	将请求参数按照参数名字典升序排列后,把所有参数param=value用&连接起来,类似URI中Query
	string的构造方式。目前支持的参数有:签名失效时间ttl(单位为秒)和用户uid。例:		ts=1443079775&uid=U123456789

2、使用HMAC-SHA1方式,以API密钥(key)对上一步生成的参数字符串进行加密。

	常见程序语言通常会内置加密函数,或通过扩展库提供支持。例如在NodeJS中,您可以使用crypto
	模块中的中的createHmac函数,例:crypto.createHmac("sha1", key)。
	其中key为应用的appsecret

3、将上一步生成的加密结果用base64编码,并做一个urlencode,得到签名sign。
	例:假设key为"secret",步骤(1)中的参数例子加密后得到的结果应为为
	dTYeoN8WdOfW4PiwgEdLa0gWFzo=,做完urlencode最终得到的签名sign为
	dTYeoN8WdOfW4PiwgEdLa0gWFzo%3d

4、将上一步得到的签名sig附在第一步构造的参数字符串后,作为请求的一个参数发送。

	上述例子里,请求参数即为
	ttl=30&uid=U123456789&sign=dTYeoN8WdOfW4PiwgEdLa0gWFzo%3d

因此,跳转到应用的登录地址,按照此方法验证sign即可判断是否是idp跳转跳转过来的。

idp-sso's People

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.