zoukankan      html  css  js  c++  java
  • OAuth 白话简明教程 3.客户端模式(Client Credentials)

    转自: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 的客户端模式。

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

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

  • 相关阅读:
    PHP (20140519)
    PHP (20140516)
    js(20140517)在JS方法中返回多个值的三种方法
    PHP (20140515)
    PHP (20140514)
    Java内网发送邮件
    每日一“酷”之Cookie
    每日一“酷”之Queue
    每日一“酷”之pprint
    每日一“酷”之copy
  • 原文地址:https://www.cnblogs.com/Ceri/p/7673937.html
Copyright © 2011-2022 走看看