日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

struts2 redirect 获取参数null_社会化登录支持授权域以便于获取更大权限

發布時間:2024/7/19 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 struts2 redirect 获取参数null_社会化登录支持授权域以便于获取更大权限 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

使用 Authing 可以輕松接入許多社會化登錄,同時無需翻看社會化登錄提供方的繁瑣接入文檔,讓開發者更加專注業務從而提升開發效率。

這看起來很方便,But,通過 Authing 登錄的社會化登錄用戶,無法獲取更高級的權限!以 Github 舉例:授權域功能上線之前,通過 Authing 登錄的 Github 用戶無法授權讀寫倉庫、讀寫 Issues 等權限;此功能上線后,通過 Authing 登錄的 Github 用戶將擁有這些高階權限的授權能力。如 Github 授權域(圖中的 Scope 參數):QQ 授權域(圖中的 Scope 參數):微博授權域(圖中的 Scope 參數):開發者只需要勾選以上 checkbox 就可以很方便的擁有這些能力!授權流程
  • 用戶通過 Authing 登錄;

  • 用戶在 Authing 登錄界面中點擊「使用 Github 登錄」;

  • 用戶通過 Github 登錄后 Authing 將 Github 的信息集成到 Authing 用戶信息中;

  • Authing 返回 Code 給開發者配置好的 redirct_uri;

  • 開發者使用 Code 換取 access_token;

  • 開發者使用 access_token 換取用戶信息;

  • 開發者在用戶信息中獲取用戶在 Github 平臺的 access_token,然后獲取操作 Github 的更高級權限;

  • 開發者完成用戶認證并開始引導用戶執行業務流程;

  • 下圖是一個簡化流程:開啟社會化登錄授權域創建 Github 應用在 Github 申請 OAuth 應用,同時授權回調地址填寫 Authing 提供的地址:https://oauth.authing.cn/oauth/github/redirect,如下圖所示:創建完成后記錄 Client ID 和 Client Secret:配置社會化登錄在Authing 控制臺中依次點擊第三方登錄 -> 社會化登錄 -> Github,打開 Github 登錄,填寫 Github OAuth 應用信息,并在 Scopes 多選框中勾選 repo,最后點擊確定:repo 授權域的作用是授權第三方應用讀寫 Github 倉庫的權限。如果你想了解其他 Scope 的含義,請查看這篇文檔:https://docs.authing.cn/authing/advanced/social-login/social-login-scopes。體驗擁有更高權限的 Github 登錄訪問登錄頁面Authing 控制臺 > 第三方登錄 > OIDC 應用,找到你的 OIDC 應用,點擊體驗按鈕。如果沒有 OIDC 應用,請先創建 OIDC 應用。轉到登錄界面后,點擊「使用 Github 登錄」,如下圖所示:在彈出的窗口中,與 Github 完成登錄認證,之后會顯示確權頁面,可見此處提示需要授權 repo,如下圖所示:點擊授權按鈕,之后是 Authing 單點登錄中的確權環節:點擊「授權登錄」,之后會跳轉到在 OIDC 應用中設置的業務回調地址:獲取到 code 之后,你可以參考以下鏈接完成登錄:1.?https://docs.authing.cn/authing/advanced/oidc/oidc-authorization#04-shi-yong-code-huan-qu-token獲取社會化登錄 token那么接下來如何從 Authing 獲取并使用 Github 的 access_token,使用更高級的權限呢?只要獲取用戶資料即可,Github 的 access_token 存在用戶資料中。以下以 Authing Node.js SDK 來舉例:安裝 authing-js-sdk:$?npm?install?authing-js-sdk初始化 SDK 并獲取用戶資料:const Authing = require('authing-js-sdk');const userPoolId = "你的用戶池 ID";const secret = "你的用戶池 Secret";let authing = new Authing({ userPoolId, secret});async function go() { let user = await authing.user({id: 'Authing 用戶 ID'}); console.log(user);}go();返回結果:{ ... "thirdPartyIdentity": { "provider": "github", "refreshToken": null, "expiresIn": null, "updatedAt": "2020-02-11T21:56:50+08:00", "accessToken": "1a20a073f967264a7e7d05528236525b1376a4a9" } ...}使用社會化登錄 token從上一步的返回結果中取出 Github Token 后,調用讀取用戶倉庫信息的 API:$?curl?-H?"Authorization:?token?1a20a073f967264a7e7d05528236525b1376a4a9"?https://api.github.com/user/repos\?visibility\=private可以看到返回了用戶的私有倉庫信息:刷新社會化登錄 token如果社會化登錄方的 token 在一定時間后失效,會導致舊的 token 無法訪問社會化登錄方的服務,因此需要刷新社會化登錄方的 token,并使用新的 token 調用相關服務。你可以調用 SDK 中的 refreshThirdPartyToken 方法來刷新社會化登錄 token:const Authing = require('authing-js-sdk');const userPoolId = "你的用戶池 ID"const secret = "你的用戶池 Secret"let authing = new Authing({ userPoolId, secret})async function go() { let res = await authing.refreshThirdPartyToken('Authing 用戶 ID'); console.log(res);}go();

    ?

    返回結果:{ refreshSuccess: true, message: 'github token 無需刷新,官網文檔已說明長期有效', provider: 'github', refreshToken: null, accessToken: '1a20a073f967264a7e7d05528236525b1376a4a9', updatedAt: '2020-02-11T21:57:04+08:00'}由于 Github 不提供 refresh_token 并且 access_token 長期有效,所以此處其實并未真正刷新 token。其他社會化登錄方如微信、QQ 提供刷新 token 功能,通過 SDK 刷新 token 時,Authing 會發出刷新 token 請求,并返回新的 accessToken 和 refreshToken。總結以上就是 Authing + Github 社會化登錄的使用方式。總結起來,Authing 幫你省去了服務器處理 OAuth 2.0 協議中 code 換 token,token 換用戶信息的過程,能夠直接將用戶信息返回給你。同時 Authing 易用的 SDK 能夠幫你快速接入獲取、刷新用戶社會化登錄 token 的功能。如果你還需要其他社會化登錄,比如微博、微信,那么此時的身份整合與管理作用的優勢就體現出來,同時你也無需閱讀國內質量參差不齊的授權登錄開發文檔。你只需要填寫配置信息,Authing 會幫你拼接授權 URL ?鏈接,Authing 會幫你處理 OAuth 2.0 協議中換取用戶信息的繁瑣過程,并將用戶信息直接返回給你的業務地址,Authing 會幫你綁定不同第三方社會化登錄提供商,Authing 為你提供簡單易用的 SDK,輕松獲取、刷新用戶的社會化登錄 token。

    總結

    以上是生活随笔為你收集整理的struts2 redirect 获取参数null_社会化登录支持授权域以便于获取更大权限的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。