转自:http://www.cftea.com/c/2016/11/6704.asp

客户端模式(Client Credentials),客户端授权模式。

客户端模式,在我看来,并不是 OAuth 的初衷。客户端模式要解决什么样的问题呢?

举例:有一个服务商提供了很多资源,天气、股票、火车时刻……如果这个服务商大方点,人人都可以抓取这些资源,也简单了,可是这个服务商要采用认证机制,只有认证了的第三方应用才可以使用这些资源。

所以这个服务商做了一个授权服务器,第三方应用纷纷在这上面注册,拿到了各自的 app_id、app_secret。按理说第三方应用在取天气时把 app_id、app_secret 传给天气服务器,然后天气服务器向授权服务器验证 app_id、app_secret,验证成功就返回天气,也能实现需求。

但是,这太简单了,怎么能够对得起人家高大上的平台呢?人家要整就要过度设计,简单问题就要复杂化。所以有了 OAuth 的客户端模式。

string url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + HttpUtility.UrlEncode(_appid) + "&secret=" + HttpUtility.UrlEncode(_appSecret);
WebClient wc = new WebClient();
string jsonString = wc.DownloadString(url);

上面是微信获取 access_token 的 C# 代码,非常简单就拿到了。

  • 第一行,构建 URL,传入 app_id 和 app_secret。
  • 第二行、第三行,用 WebClient 获取返回结果。
  • 然后就解析这个 JSON 字符串吧,就取到 access_token 了,相关技术:C# 中处理 JSON
  • 最后就凭这个 access_token 去使用资源服务器的服务吧。(并不是直接凭 app_id、app_secret 去使用资源服务器的服务的,中间隔了个 access_token,这就是我前面说的简单问题复杂化,当然大平台考虑更细的安全性,复杂化还是有必要的。)

发现没,到这里都在提第三方应用、授权服务器、资源服务器(上面提到的天气服务器就是一个资源服务器),并没有提用户,这就是 OAuth 的客户端模式。

可以看出客户端模式完全就是授权码模式的下半部分,也就是省去用户登录嘛,其他大同小异。

所以,不作介绍了,反正说得再详细,各大公司也不一定是完全遵照这个来的。

OAuth 白话简明教程 3.客户端模式(Client Credentials)的更多相关文章

  1. OAuth 白话简明教程 5.其他模式

    转自:http://www.cftea.com/c/2016/11/6706.asp OAuth 白话简明教程 1.简述 OAuth 白话简明教程 2.授权码模式(Authorization Code ...

  2. OAuth 白话简明教程 2.授权码模式(Authorization Code)

    转自:http://www.cftea.com/c/2016/11/6703.asp OAuth 白话简明教程 1.简述 OAuth 白话简明教程 2.授权码模式(Authorization Code ...

  3. OAuth 白话简明教程 1.简述

    转自:http://www.cftea.com/c/2016/11/6702.asp OAuth 白话简明教程 1.简述 OAuth 白话简明教程 2.授权码模式(Authorization Code ...

  4. OAuth 白话简明教程 4.刷新 Access Token

    转自:http://www.cftea.com/c/2016/11/6705.asp OAuth 白话简明教程 1.简述 OAuth 白话简明教程 2.授权码模式(Authorization Code ...

  5. (转)基于OWIN WebAPI 使用OAuth授权服务【客户端模式(Client Credentials Grant)】

    适应范围 采用Client Credentials方式,即应用公钥.密钥方式获取Access Token,适用于任何类型应用,但通过它所获取的Access Token只能用于访问与用户无关的Open ...

  6. 基于 IdentityServer3 实现 OAuth 2.0 授权服务【客户端模式(Client Credentials Grant)】

    github:https://github.com/IdentityServer/IdentityServer3/ documentation:https://identityserver.githu ...

  7. 基于OWIN WebAPI 使用OAuth授权服务【客户端模式(Client Credentials Grant)】

    适应范围 采用Client Credentials方式,即应用公钥.密钥方式获取Access Token,适用于任何类型应用,但通过它所获取的Access Token只能用于访问与用户无关的Open ...

  8. IdentityServer4 (1) 客户端授权模式(Client Credentials)

    写在前面 1.源码(.Net Core 2.2) git地址:https://github.com/yizhaoxian/CoreIdentityServer4Demo.git 2.相关章节 2.1. ...

  9. asp.net core IdentityServer4 实现 Client credentials(客户端凭证)

    前言 OAuth 2.0默认四种授权模式(GrantType) 授权码模式(authorization_code) 简化模式(implicit) 密码模式(resource owner passwor ...

随机推荐

  1. SDRAM相位角计算

    SDRAM相位角计算 下面是我复制别人的没有图片 如果想看原文 点击下面链接,, http://wenku.baidu.com/view/91e2d76a27284b73f24250e6.html 一 ...

  2. 【CF839E】Mother of Dragons 折半状压

    [CF839E]Mother of Dragons 题意:给你一张n个点,m条边的无向图.你有k点能量,你可以把能量分配到任意一些点上,每个点分到的能量可以是一个非负实数.定义总能量为:对于所有边&l ...

  3. 教你写gulp plugin

    前端开发近两年工程化大幅飙升.随着Nodejs大放异彩,静态文件处理不再需要其他语言辅助.主要的两大工具即为基于文件的grunt,基于流的gulp.简单来说,如果需要的只是文件处理,gulp绝对首选. ...

  4. 近期在看的一段JS(谁能看出我想实现什么功能)

    示例代码: <script type="text/javascript"> !function(){ var e=/([http|https]:\/\/[a-zA-Z0 ...

  5. CSS在网页中应用的方式_嵌入式

    内联式样式表:直接写在现有的标记中,比如: 复制代码 代码如下: <p style="font-size:24px;">www.phpstudy.net</p&g ...

  6. PHP 学习笔记之一:thinkPHP的volist标签

    Volist标签主要用于在模板中循环输出数据集或者多维数组. 属性: name : 必须,输出数据模板变量,后台提供的变量. id : 必须,是循环变量,可以随便定义,但是不能跟name相同. 举个栗 ...

  7. zero-shor learning 数据集

    OSR数据集下载地址: http://people.csail.mit.edu/torralba/code/spatialenvelope/ Relative Attributes Marr Priz ...

  8. ZOJ 4029 - Now Loading!!! - [前缀和+二分]

    题目链接:http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4029 Time Limit: 1 Second Memory L ...

  9. nginx map使用方法

    map指令使用ngx_http_map_module模块提供的.默认情况下,nginx有加载这个模块,除非人为的 --without-http_map_module.ngx_http_map_modu ...

  10. ArcGIS API for javascript开发笔记(三)——解决打印输出的中文为乱码问题

    感谢一路走来默默支持和陪伴的你~~~ ----------------------欢迎来访,拒绝转载---------------------- 1.      调用ArcGIS API的Print实 ...