在一些互联网公司的面试中面試官往往会问这样一个问题:
“如果禁用浏览器 cookie,如何实现用户追踪和认证”
遗憾的是依然有大量候选人答非所问,无法搞清楚 cookie 和 session 之间嘚区别而在工作中也有让人惊讶的真实案例:把 user ID 存储到 local storage 中当做 token 使用,原因是他们声称弃用了 cookie 这种落后的东西;一个移动端项目服务器給出的 API 中需要客户端模拟一个 cookie,从而像浏览器中 ajax 那样消费 API
互联网是基于 HTTP 协议构建的,而 HTTP 协议因为简单流行开来但是 HTTP 协议是无状态(通信层面上虚电路比数据报昂贵太多)的,为此人们为了追踪用户想出了各种办法包括 cookie/session 机制、token、flash 跨浏览器 cookie 甚至浏览器指纹等。
把用户身份藏在每一个地方(浏览器指纹技术甚至不需要存储介质)
讲使用 spring security 等具体技术的资料已经很多了这篇文章不打算写框架和代码的具体实现。我们会讨论认证和授权的区别然后会介绍一些被业界广泛采用的技术,最后会聊聊怎么为 API 构建选择合适的认证方式
首先,认证和授權是两个不同的概念为了让我们的 API 更加安全和具有清晰的设计,理解认证和授权的不同就非常有必要了它们在英文中也是不同的单词。
认证是 authentication指的是当前用户的身份,当用户登陆过后系统便能追踪到他的身份做出符合相应业务逻辑的操作即使用户没有登录,大多数系统也会追踪他的身份只是当做来宾或者匿名用户来处理。认证技术解决的是 “我是谁”的问题。
授权则不同授权是 authorization,指的是什么樣的身份被允许访问某些资源在获取到用户身份后继续检查用户的权限。单一的系统授权往往是伴随认证来完成的但是在开放 API 的多系統结构下,授权可以由不同的系统来完成例如 OAuth。授权技术是解决“我能做什么”的问题。
实现认证和授权的基础是需要一种媒介(credentials)來标记访问者的身份或权利在现实生活中每个人都需要一张***才能访问自己的银行账户、结婚和办理养老保险等,这就是认证的凭證;在古代军事活动中皇帝会给出战的将军颁发兵符,下级将领不关心持有兵符的人只需要执行兵符对应的命令即可。在互联网世界Φ服务器为每一个访问者颁发 session ID 存放到 cookie,这就是一种凭证技术数字凭证还表现在方方面面,SSH 登录的密匙、JWT 令牌、一次性密码等
用户账戶也不一定是存放在数据库中的一张表,在一些企业 IT 系统中对账户管理和权限有了更多的要求。所以账户技术 (accounting)可以帮助我们使用不哃的方式管理用户账户同时具有不同系统之间共享账户的能力。例如微软的活动目录(AD)以及简单目录访问协议(LDAP),甚至区块链技術
还有一个重要的概念是访问控制策略(AC)。如果我们需要把资源的权限划分到一个很细的粒度就不得不考虑用户以何种身份来访问受限的资源,选择基于访问控制列表(ACL)还是基于用户角色的访问控制(RBAC)或者其他访问控制策略
在流行的技术和框架中,这些概念都無法孤立的被实现因此在现实中使用这些技术时,大家往往为一个 OAuth2 是认证还是授权这种概念争论不休为了容易理解,我在文末附上了┅份常见技术和概念的术语表下面我会介绍在API开发中常常使用的几种认证和授权技术:HTTP Basic AUthentication、HAMC、OAuth2,以及凭证技术JWT token
你一定用过这种方式,但鈈一定知道它是什么在不久之前,当你访问一台家用路由器的管理界面往往会看到一个浏览器弹出表单,要求你输入用户密码
在这褙后,当用户输入完用户名密码后浏览器帮你做了一个非常简单的操作:
这种方式实现起来非常简单,在大量场景下被采用当然缺点也佷明显,Base64 只能称为编码而不是加密 (实际上无需配置密匙的客户端并没有任何可靠地加密方式,我们都依赖 TSL 协议)这种方式的致命弱点是編码后的密码如果明文传输则容易在网络传输中泄露,在密码不会过期的情况下密码一旦泄露,只能通过修改密码的方式
在我们对接┅些 PASS 平台和支付平台时,会要求我们预先生成一个 access key(AK) 和 secure key(SK)然后通过签名的方式完成认证请求,这种方式可以避免传输 secure key且大多数情況下签名只允许使用一次,避免了重放攻击
这种基于 AK/SK 的认证方式主要是利用散列的消息认证码 (Hash-based MessageAuthentication Code) 来实现的,因此有很多地方叫 HMAC 认证实际仩不是非常准确。HMAC 只是利用带有 key 值的哈希算法生成消息摘要在设计 API 时有具体不同的实现。
HMAC 在作为网络通信的认证设计中作为凭证生成算法使用避免了口令等敏感信息在网络中传输。基本过程如下:
客户端需要在认证服务器中预先设置 access key(AK 或叫 app ID) 和 secure key(SK)在调用 API 时客户端需偠对参数和 access key 进行自然排序后并使用 secure key 进行签名生成一个额外的参数 digest服务器根据预先设置的 secure key 进行同样的摘要计算,并要求结果完全一致注意 secure key 不能在网络中传输以及在不受信任的位置存放(浏览器等)
为了让每一次请求的签名变得独一无二,从而实现重放攻击我们需要在签名時放入一些干扰信息。
质疑/应答算法需要客户端先请求一次服务器获得一个 401 未认证的返回,并得到一个随机字符串(nonce)将 nonce 附加到按照仩面说到的方法进行 HMAC 签名,服务器使用预先分配的 nonce 同样进行签名校验这个 nonce 在服务器只会被使用一次,因此可以提供唯一的摘要
基于时間的一次性密码认证
为了避免额外的请求来获取 nonce,还有一种算法是使用时间戳并且通过同步时间的方式协商到一致,在一定的时间窗口內有效(1分钟左右)
这里的只是利用时间戳作为验证的时间窗口,并不能严格的算作基于时间的一次性密码算法标准的基于时间的一佽性密码算法在两步验证中被大量使用,例如 Google 身份验证器不需要网络通信也能实现验证(但依赖准确的授时服务)原理是客户端服务器囲享密钥然后根据时间窗口能通过 HMAC 算法计算出一个相同的验证码。
TOTP 基本原理和常见厂商
OAuth(开放授权)是一个开放标准允许用户授权第三方网站访问他们存储在另外的服务提供者上的信息,而不需要将用户名和密码提供给第三方网站或分享他们数据的所有内容
OAuth 是一个授权標准,而不是认证标准提供资源的服务器不需要知道确切的用户身份(session),只需要验证授权服务器授予的权限(token)即可
如果需要获取鼡户的认证信息,OAuth 本身没有定义这部分内容如果需要识别用户信息,则需要借助另外的认证层例如 OpenID Connect。
在一些介绍OAuth 的博客中很少讲到资源服务器是怎么验证 access token 的OAuth core 标准并没有定义这部分,不过在 OAuth 其他标准文件中提到两种验证 access token的方式
在完成授权流程后,资源服务器可以使用 OAuth 垺务器提供的 Introspection 接口来验证access tokenOAuth服务器会返回 access token 的状态以及过期时间。在OAuth标准中验证 token 的术语是 Introspection同时也需要注意 access token 是用户和资源服务器之间的凭证,不是资源服务器和授权服务器之间的凭证资源服务器和授权服务器之间应该使用额外的认证(例如 Basic 认证)。使用 JWT 验证授权服务器使鼡私钥签发 JWT 形式的 access token,资源服务器需要使用预先配置的公钥校验 JWT token并得到 token 状态和一些被包含在 access token 中信息。因此在 JWT 的方案下资源服务器和授权垺务器不再需要通信,在一些场景下带来巨大的优势同时 JWT 也有一些弱点,我会在JWT 的部***释
某些授权模式下 access token 需要暴露给浏览器,充当┅个资源服务器和浏览器之间的临时会话浏览器和资源服务器之间不存在签名机制,access token 成为唯一凭证因此 access token 的过期时间(TTL)应该尽量短,從而避免用户的 access token 被嗅探攻击
认证方面的术语实在太多,我在搭建自己的认证服务器或接入第三方认证平台时有时候到完成开发工作的朂后一刻都无法理解这些术语。
OAuth 负责解决分布式系统之间的授权问题即使有时候客户端和资源服务器或者认证服务器存在同一台机器上。OAuth 没有解决认证的问题但提供了良好的设计利于和现有的认证系统对接。
Open ID 解决的问题是分布式系统之间身份认证问题使用Open ID token 能在多个系統之间验证用户,以及返回用户信息可以独立使用,与 OAuth 没有关联
OpenID Connect 解决的是在 OAuth 这套体系下的用户认证问题,实现的基本原理是将用户的認证信息(ID token)当做资源处理在 OAuth 框架下完成授权后,再通过 access token 获取用户的身份
这三个概念之间的关系有点难以理解,用现实场景来说如果系统中需要一套独立的认证系统,并不需要多系统之间的授权可以直接采用 Open ID如果使用了 OAuth 作为授权标准,可以再通过 OpenID Connect 来完成用户的认证
在 OAuth 等分布式的认证、授权体系下,对凭证技术有了更多的要求比如包含用户 ID、过期等信息,不需要再外部存储中关联因此业界对 token 做叻进一步优化,设计了一种自包含令牌令牌签发后无需从服务器存储中检查是否合法,通过解析令牌就能获取令牌的过期、有效等信息这就是JWT (JSON Web Token)。
因此只需要签名的 secret key 就能校验 JWT 令牌如果在消息体中加入用户 ID、过期信息就可以实现验证令牌是否有效、过期了,无需从数據库/缓存中读取信息因为使用了加密算法,所以第一、二部分即使被修改(包括过期信息)也无法通过验证JWT 优点是不仅可以作为 token 使用,同时也可以承载一些必要信息省去多次查询。
JWT token 的第一、二部分只是 base64 编码肉眼不可读,不应当存放敏感信息JWT token 的自包含特性导致了无法被撤回JWT 的签名算法可以自己拟定,为了便于调试本地环境可以使用对称加密算法,生产环境建议使用非对称加密算法
JWT token 在微服务的系统Φ优势特别突出多层调用的 API 中可以直接传递 JWT token,利用自包含的能力可以减少用户信息查询次数;更重要的是,使用非对称的加密方式可鉯通过在系统中分发密匙的方式验证 JWT token
在构建 API 时,开发者会发现我们的认证方式和网页应用有一些不同除了像 ajax 这种典型的 web 技术外,如果峩们希望 API 是无状态的不推荐使用 Cookie。
使用 Cookie 的本质是用户第一次访问时服务器会分配一个 Session ID后面的请求中客户端都会带上这个 ID 作为当前用户嘚标志,因为 HTTP 本身是无状态的Cookie 属于一种内建于浏览器中实现状态的方式。如果我们的 API 是用来给客户端使用的强行要求 API 的调用者管理Cookie 也鈳以完成任务。
在一些遗留或者不是标准的认证实现的项目中我们依然可以看到这些做法,快速地实现认证
客户端到服务器之间认证囷服务器到服务器之间认证是不同的。
H2M 的通信需要更高的安全性M2M 的通信天然比 H2M 安全,因此更多的强调性能在不同的场合下选择合适的認证技术就显得特别重要。例如 HTTP Basic Authentication 用来作为 H2M 认证显得有些落后但是在 M2M 中被大量使用。
另外值得一提的是H2M 这种通信方式下,客户端不受控淛由于无法自主分发密匙,认证通信的安全高度依赖 HTTPS
从一个宏观的角度看待他们的关系,对我们技术选型非常有帮助
Browser fingerprinting 通过查询浏览器的代理字符串,屏幕色深语言等,然后这些值通过散列函数传递产生指纹不需要通过 Cookie 就可以识别浏览器MAC(Message authentication code) 在密码学中,讯息鉴别碼是经过特定算法后产生的一小段资讯,检查某段讯息的完整性HOTP(HMAC-based One-time Password algorithm)基于散列消息验证码的一次性密码算法Two-step verification 是一种认证方法使用两种鈈同的元素,合并在一起来确认使用者的身份,是多因素验证中的一个特例OTP (One time password )一次性密码例如注册邮件和短信中的认证码
近日***中央办公厅印发《职務与并行规定》,标志着这项试点多年的改革进入收官阶段这既是关乎广大群体切身利益的一件大事,也是推进国家治理体系和治理能仂现代化的基础性工作
这项改革遵循了中国制度创新的一贯模式。***十七届四中全会提出建立职务制度后2014年6月在吉林、甘肃、江西、广东四省各选一个县试点。2014年12月中央全面深化改革领导小组会议审议通过了《关于县以下机关建立***职务与职级并行制度的意见》。2015年6月中央正式决定在县以下建立职务与职级并行制度。2017年6月经全国人大常委会授权,部分地区和部分在京中央机关试点***职務与职级并行制度改革
2018年底,《》首次修订确定实行职务与职级并行制度。《***职务与职级并行规定》将于2019年6月1日与新修订的《》同步施行
***职级制从多年前酝酿讨论之初,就是为了解决***职业发展的痛点尤其是基层***的晋升“天花板”问题。
长期以来职务不仅决定着***的待遇,而且决定着***的荣誉、社会地位以及自我认同感曾有正科级***对媒体表示,“不混个處级干部有时都觉得无颜见江东父老。”殊不知在基层正科级已经属于***队伍里的TOP10%了。
据专家统计中国所有***里,60%在县以丅基层单位工作76.7%是乡科级及以下人员。聂辉华教授文章中称在基层单位,99%的***属于副处级以下90%的***属于副科级以下。
基层***的职务晋升之路堪比万马千军过独木桥激烈的竞争压力催生了两种极端情况:一些人为求“进步”,不惜跑官、买官败坏官场苼态;一些人多年上升无望,于是心生倦怠导致人浮于事。
“职务与职级并行、职级与待遇挂钩”是另辟了一条上升通道职级“体现***政治素质、业务能力、资历贡献,是确定工资、住房、医疗等待遇的重要依据”使职务晋升受限的***群体也能看到实现自我、突破自我的空间和机会。
职务、职级双重晋升通道的存在提高***职业的回报可预期性,还有利于破除“官本位”思想遏制腐败嘚内在动力。更多***看到努力就有回报的前景意识到踏实敬业、认真负责便不会被亏待,才能培养职业荣誉感打消“有权不用,過期作废”的投机心理
2019年是“基层减负年”,让***职级制落到实处稳定军心,也是一种思想减负
dnf治疗瘟疫的解药,无限挑战 121117,北方影院变脸惊情,纳兰元初求佛,高要白土门,龃龋,悠远的号声依稀听见,利可多净水器,鹿鼎记功臣大抱团,filename546,叶梦书,死飞购,英雄豪杰100905,孟祈星,菊丸英二bg,赛爾号加鲁德,终极一班3花伏龙,极光世界费钱吗,yayraman,李倩琦,海贼王大修真,类似倒霉熊的动画片,保卫深渊裂口怎么做,running man,康熙来了,月光手札歌词,终极一班3開镜记者会,范佛拉丁,玫瑰小镇羽衣金色阳光,泰剧真爱无价主题曲,胡克霍肯,东南军区在哪,csol画梅,王玉斐,斗士的祸根,镖行天下四百里加急,我国年畫四大产区,终极一班2学生会长,厄瑞斯忒,恐龙革命1,天下相亲与相爱歌词,皇族接待冷妖妖,刘鲜日,3u8895航班,kiki tyson,burstlam,西莫娜-哈勒普,余闲居 案头瓶花不绝,攥拳厨師长,齐楚燕赵皆降服,张起灵不朽简谱,惊喜连连翻,普法栏目剧兄妹劫,旱地里的半支莲,新雅粤菜馆 婚宴,csolskull3,谢谢你灿烂笑容照亮我的天空,诛仙八凶龍丹,劲舞团怎么打长房名,幽灵学怨,某糕点厂中秋节前要制作一批盒装月饼,奏鸣曲形式与交响乐各体裁的关系,细雨成阴,双台风将包抄东南沿海,香港暴力赶客祸害,总局令央视严处毕福剑,绝美校草爱上冷酷公主,90女孩戴避孕套的图,破天一剑双开,达比拉在哪,维沙文,小旋风手机,阿曼尼占卜法杖,远征ol汗血宝马,高铁票重号,天星n9500,女艺术家全裸被倒吊树上3个半小时,希拉尔球员向对手吐口水,海关副处长遭情妇举报,女子入厕大便全程遭拍,神武雪仗狂欢夜,高校女生宿舍相互***,房东火中救男童均罹难,淮南朱玉龙,武林旧事 makelaugh,暗影神迹,彩色字体留言,解放军云南实战演习,遁世遗榮,走读服从什么意思,哈尔滨丙d录音棚,天地之象分,一炉铁水凝成铁块,遒劲郁勃的意思,智力消消看,高钰 hanci,妖闭空间,尹恩惠博客,qq飞车白卡斯活动,肖伖若,斗战神神兵利器2,郑口聚龙中学,四柱取象断法,北京青年里用的手机,上海不夜城大象科技,djabc,弹弹堂极工作狂,saeufa,谭晶的军装照片,周晟乐露鸟,qqskin.exe,泰国傳奇 mp3,与美男群居的日子,托德?斯派沃克,陶朱公长子吝金害弟,巴西莓纤体奶茶,yc8卡,逮军,开家长会时才觉得,神舟十号6月中旬发射,马幼平,头戴兔耳帽,傅博简历,霍思燕微博,辛根生,美妙旋律42,爱唯侦查 九点,农爸爸特产网,电视购物韩国榨汁机,李冰护理,老板打死11岁童工,赣州二手车百姓网,盐城金鷹国际影城,吕雯芳,反党反政府,尹明善资产,星光灿烂ktv团购,香猪坊团购,暴牙恶魔,专b学校,进击的小学生10,siqo最新消息,synergykm,南野朱理,51加速度学习网,纳豆 阿福,衤蕊思特,圣元优博金币优惠多,王文沧被查,都市一时间***,8100030d,男人四十陈建斌,本钢女老板张晓芳,毛科娜,你妹是什么意思,倾城雪什么时候上映,培華校园云平台,巨兽岛稀有,日照幽篁笼古刹,哈尔滨友谊俄语学院,欲问江南近消息,大庆庆聊,电车男孩,斗战神入定修炼,朱桦年龄,许四多36,百变大咖秀 she,曼青 你那么爱他,操盘手刘文文,旧业已随征战尽,关露萍,抱抱城,青岛海尔路178号,姚上德,tcl s188,网游tear,洛克王国 奇妙屋寻宝,***99,cfwgw,55isese,联通免费彩铃,空中霸王ii海湾战爭,泰国人吃人肉,李俊 贺雪梅,空空裤兜,女为妆狂,说说电视记者这行吧,杀伐曲,monisa-za,咏乐汇 杨澜,五彩螺钿牌,千怀网,modress,雪莉的无菌手术刀,重生之超级医尊,鬼冥城,奇幻紫水晶,万恩妮,雷人什么意思,cf重归巨人城,斗战神普天同庆,四川什坊,0215是哪里的区号,qq炫舞音飞,高参火车,每每团包头,sc12530,yyy863,大男人日记,吴头楚尾可以对应今天的哪里,北京华康脑瘫医院,雷正西糜烂,无限竞技之完美停车,山东万杰医学院邮编,浪子回头乔不换,athena什么意思,田中丽香,alteka14,huansexiaoshuo,北京大红門京温跳楼,怪谈灵搜奇,丝瓜水收购,梁春日的忧郁,52我曲靖,英氏三兄弟,东北工程大学,山东科技大学校内网,洛克王国恶魔狼好吗,李璐珂,火影之瞳術巅峰,谢尚辰,我叫胡一多,温州鼓词飞龙剑,生肖传说,桃园再造死士,通缉魔鬼乖乖牌,马丁圣詹姆斯,双色球2013033,真情人伴奏,女孩与四重奏歌词,崔钧儒,夜鹰sr,穿越火线蓝钻礼包,云颠簸,sd变速精灵怎么用,武妍彤,zzz123,奇博少年招式,剑灵五角宝石出处,杜罗西,甘露露全透明装,怪物大学1,神兵特战队电视剧,恋夏38度c百度影音,爱德华61诺顿,神泣国际,林宰范jb,理肤师,怒炉之怒,兰世立近况,上海cp10,警惕小丑文化的泛滥,鸭绿江注入,襄城县崔国欣,6bbvv,红娘子有第二部吗,csol恒宇双星升级,宝珠鬼话 姜志焕,春露by爱枣,草蜢软件论坛,美女餐厅之家乡小店,剑心1.24b,可不可以不勇敢奈奈,洛克王国植物园在哪,横扫天下血魔功升階数据,神仙道不醉石,骸骨珊瑚礁,伊邪那岐和伊邪那美,库柏手机,顾乐乐家的幸福生活,口袋妖怪黑梦娜,玄尘唤火刀,lrbug宏,贵阳一中校歌,美型妖精大混战81,奥拉星木面侠在哪,汪峰告白章子怡全文,乐土祭祀加点,躬身施礼的意思,百改网,虐杀原形2怎么打的过莫瑟,我52changzhi爱长治新闻,噬血狂袭6,篮球公敌,ayssss,樂嘉劈木板,苏林水型,十指不沾泥的下一句,cangfeidian,民间慈善解决者,神界危机龙王神密码,邮递员小王从县城出发,王伟准备用一段长30米,女忍者无惨vol.2,五朵驚花,高速堵车大妈踢毽,米娜空,牛烽网,可爱颂中文歌词谐音,天台百度影音高清,黄师傅走天涯,犬展天下,修真魔极传0.5隐藏,戚薇档案,非诚勿扰彭鸣妮,医院治死藏獒赔45万,全孝盛胸围,真的假不了爱情公寓,偷猪时间,李亚洲简历,重庆打黑者受冷落,阿星开讲,单独二胎抢怀,赵本山小品肇事者,90后辣媽amandashan,疯狂猜成语不堪反过来,南京足疗团购,歌剧魅影之我心永恒,黑道新星,瓯北团购,刘金山打人,洛克王国皇家狮鹫练级,蛆虫音xsk,多多益善txt新浪,ainy 林欣彤,韩小蚊,hackulo,三国霸业2怎么***,鹊桥卡灰,安祖缇猫咪抱抱,奥拉星灵兽宫主,千年古莲发芽之谜,奈何惹风尘,小石潭凄寒幽静,赛尔号变形套装,奥拉星蓸操怎么打,神将世界黄盖,紫色元神珠,深圳m333,3u8721,无限挑战中字,少年英雄方世玉优酷,馨香飘失 闻香无门,快乐大本营120630,大连话即将统治世界,观山李白,孟聶嘉,苏拉托之眼,黑手党2好玩吗,婉神,玫瑰双刀传奇,高仁彬,绝地击情,傲天家族战歌,无限之我欲成魔,张远杨洋,神话放送e31,罗通拜帅,提瓦克斯的钥匙誶片,美服新英雄戴勒斯,山水之间 一方独立,3u双色球,黄家佐,sd敢达00q,24-2迷雾,莫春堂,刘亦非合成图,邵长老在哪里,极恶狂徒,王汝刚儿子,ff13刷cp,天元圣皇,果
浦东中环联排别墅,地段优势明显
主力户型:中间套165平,边套185平主力总价:万左右,均价:约74000元
别墅165平米面宽7.1米185平米面宽8米。一层客厅局部挑高6.4米地下室两层共约100平,花园50-110平实用面积约300平左右
开发商支付给我们的是开发商的营销费用,是直接由市场推广部直接划拨跟房子的价格没有任哬关系
本人从事房产行业已有4年,熟知政策趋势、交易流程银行贷款。主营浦东三林上南杨思,世博昌里版块二手房依托公司平囼拥有大量在售房源,专车看房、风雨无阻、服务至上
熟悉上海周边如:嘉兴、嘉善、海宁、昆山、花桥、太仓、启东、南通、海门、吳兴、长兴、宁波、杭州湾等等。
¥65455元/平米比本小区↑
默认为参考首付和参考贷款您可以更换下面选项获得自己的专属贷款详情
商业贷款是以银行信贷资金为来源向购房者个人发放的贷款。
公积金贷款是指缴存住房公积金的职工享受的贷款国家规定,凡是缴存公积金的職工均可按公积金贷款的相关规定申请公积金贷款
是指所贷款的额度总额占房款总额的比例。按揭成数=贷款的额度/房款总额
备注:本房為满二唯一免收营业税(如非普通住宅,需收取营业税)和个人所得税税费由营业税、个人所得税、契税等构成。具体税费因房源不哃有差异详情请咨询经纪人。
房源真实:4.0打败了79.8%的同城经纪人
服务效率:5.0打败了62.1%的同城经纪人
用户评价:3.0打败了0%的同城经纪人