国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

用 Authing 10分鐘實(shí)現(xiàn)單點(diǎn)登錄(SSO)

Cobub / 1245人閱讀

摘要:?jiǎn)吸c(diǎn)登錄,簡(jiǎn)稱為,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。添加三個(gè)按鈕增加三個(gè)按鈕控件到中,目的是為了演示如何使用管理單點(diǎn)登錄狀態(tài)。運(yùn)行方法在終端中運(yùn)行以下命令之后在瀏覽器訪問(wèn)。在應(yīng)用交互中的位置官網(wǎng)小登錄倉(cāng)庫(kù)歡迎,歡迎文檔

單點(diǎn)登錄(Single Sign On),簡(jiǎn)稱為SSO,是目前比較流行的企業(yè)業(yè)務(wù)整合的解決方案之一。
SSO的定義是在多個(gè)應(yīng)用系統(tǒng)中,用戶只需要登錄一次就可以訪問(wèn)所有相互信任的應(yīng)用系統(tǒng)。

實(shí)現(xiàn)單點(diǎn)登錄 開(kāi)始之前

如果你不了解用戶池、單點(diǎn)登錄和認(rèn)證授權(quán),建議先閱讀基礎(chǔ)概念。

預(yù)備知識(shí)

基本的 HTML 和 CSS 知識(shí)

中級(jí) JavaScript 技能

所需工具

你喜歡的文本編輯器

可以在本地運(yùn)行的 Web 服務(wù)器(比如:npm install http-server -g

注冊(cè)一個(gè) Authing 賬號(hào)

如果你還沒(méi)有賬號(hào),請(qǐng)點(diǎn)擊這里注冊(cè) Authing 賬號(hào),注冊(cè)完成后請(qǐng)進(jìn)入控制臺(tái)并創(chuàng)建一個(gè)用戶池。

創(chuàng)建一個(gè) OIDC 應(yīng)用

第三方登錄 -> OIDC 應(yīng)用選項(xiàng)卡,點(diǎn)擊藍(lán)色的「創(chuàng)建 OIDC 應(yīng)用」按鈕。

填上你的應(yīng)用名,指定此 OIDC 應(yīng)用的二級(jí)域名(認(rèn)證地址),回調(diào)地址,其他參數(shù)保留默認(rèn)即可。點(diǎn)擊「確定」。

參數(shù)解釋

認(rèn)證地址,一個(gè) authing.cn 的二級(jí)域名,用戶將在此網(wǎng)址進(jìn)行登錄。

回調(diào) URL,OIDC 登錄成功后,回調(diào)到開(kāi)發(fā)者自己業(yè)務(wù)的地址。本教程為演示,填寫(xiě)的地址是 http://localhost:8080,實(shí)際場(chǎng)景下要填寫(xiě)自己的業(yè)務(wù)地址。

在應(yīng)用列表中點(diǎn)擊剛創(chuàng)建好的應(yīng)用,記錄下 AppID,二級(jí)域名,供以后使用。

使用 AuthingSSO SDK 集成單點(diǎn)登錄 創(chuàng)建一個(gè)空白的 HTML 文檔用來(lái)編寫(xiě) Authing 程序

本教程只是為了演示,因此我們沒(méi)選擇高級(jí)框架,這可以讓我們專注于 Authing 本身。



  
    
    
    
    Authing SSO Example
  
  
添加三個(gè)按鈕

增加三個(gè)按鈕控件到 body 中,目的是為了演示如何使用 SDK 管理單點(diǎn)登錄狀態(tài)。



引入 AuthingSSO 并初始化

從 CDN 加載 AuthingSSO 的 SDK。填入你的 OIDC 應(yīng)用 ID 和 域名,進(jìn)行初始化。


為按鈕注冊(cè)點(diǎn)擊事件

達(dá)到的效果是:

點(diǎn)擊 login 按鈕,瀏覽器會(huì)跳轉(zhuǎn)到 OIDC 登錄頁(yè)面,與用戶完成身份確認(rèn)。

點(diǎn)擊 trackSession 按鈕,會(huì)顯示當(dāng)前登錄狀態(tài)。

點(diǎn)擊 logout 按鈕,進(jìn)行單點(diǎn)登出。

let login = document.getElementById("btn-login");
let trackSession = document.getElementById("btn-track-session");
let logout = document.getElementById("btn-logout");
login.onclick = function() {
  auth.login();
};
trackSession.onclick = async function() {
  let res = await auth.trackSession();
  alert(JSON.stringify(res));
};
logout.onclick = async function() {
  let res = await auth.logout();
  alert(JSON.stringify(res));
};
完整代碼


  
    
    
    
    Authing SSO Example
  
  
    
    
    
    
    
  

示例代碼可從 Github 上找到,建議將 Github 上的代碼下載運(yùn)行。

運(yùn)行方法

在終端中運(yùn)行以下命令

$ git clone https://github.com/Authing/authing-sso-demo
$ cd authing-sso-demo
$ npm install -g http-server
$ http-server

之后在瀏覽器訪問(wèn) http://localhost:8080。

{% hint style="warning" %}
如果本地 8080 端口已被占用,應(yīng)用可能會(huì)運(yùn)行在 8081、8082 等后續(xù)端口。
{% endhint %}

運(yùn)行效果

最初,我們沒(méi)有登錄,因此,點(diǎn)擊 trackSession 按鈕獲取到的登錄狀態(tài)為空。

現(xiàn)在我們點(diǎn)擊 login 按鈕,會(huì)跳轉(zhuǎn)到 OIDC 應(yīng)用的用戶認(rèn)證頁(yè)面,輸入用戶名密碼進(jìn)行登錄。

瀏覽器被重定向到我們之前設(shè)置的回調(diào)鏈接,記下 code 參數(shù),用于后面換取用戶信息。

點(diǎn)擊 trackSession 按鈕,此時(shí)能夠獲取到該用戶的登錄狀態(tài),包括用戶 ID,應(yīng)用 ID,應(yīng)用類型。

點(diǎn)擊 logout 按鈕,輸出單點(diǎn)登出成功。

此時(shí)我們?cè)冱c(diǎn)擊 trackSession 按鈕,可見(jiàn)登錄狀態(tài)為空,說(shuō)明用戶已經(jīng)單點(diǎn)登出了。

獲取用戶信息 使用 OIDC 流程中返回的 code 換取 access_token

向以下地址發(fā)送 POST 請(qǐng)求:

POST https://OIDC_APP_DOMAIN.authing.cn/oauth/oidc/token

body 參數(shù)

參數(shù)名 意義
client_id OIDC 應(yīng)用的 app_id
redirect_uri 在控制臺(tái)配置的 OIDC 回調(diào) url 其中的一個(gè)值
scope 需要請(qǐng)求的權(quán)限,如果需要獲取 email 和手機(jī)號(hào)需要有 phone email,如果需要 refresh_token 需要包含 offline_access 參考 scope 表格
response_type OIDC 模式,可以為 code, id_token, id_token token, code id_token, code token, code id_token token 參考 OIDC 規(guī)范
prompt 可以為 none,login,consent 或 select_account,指定 AP 與 End-User 的交互方式,如需 refresh_token,必須為 consent 參考 OIDC 規(guī)范
state 一個(gè)隨機(jī)字符串,用于防范 CSRF 攻擊,如果 response 中的 state 值和發(fā)送請(qǐng)求之前設(shè)置的 state 值不同,說(shuō)明受到攻擊
nonce 一個(gè)隨機(jī)字符串,用于防范 Replay 攻擊

返回示例

{
  "access_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InIxTGtiQm8zOTI1UmIyWkZGckt5VTNNVmV4OVQyODE3S3gwdmJpNmlfS2MifQ.eyJqdGkiOiJ4R01uczd5cmNFckxiakNRVW9US1MiLCJzdWIiOiI1YzlmNzVjN2NjZjg3YjA1YTkyMWU5YjAiLCJpc3MiOiJodHRwczovL2F1dGhpbmcuY24iLCJpYXQiOjE1NTQ1Mzc4NjksImV4cCI6MTU1NDU0MTQ2OSwic2NvcGUiOiJvcGVuaWQgcHJvZmlsZSBvZmZsaW5lX2FjY2VzcyBwaG9uZSBlbWFpbCIsImF1ZCI6IjVjYTc2NWUzOTMxOTRkNTg5MWRiMTkyNyJ9.wX05OAgYuXeYM7zCxhrkvTO_taqxrCTG_L2ImDmQjMml6E3GXjYA9EFK0NfWquUI2mdSMAqohX-ndffN0fa5cChdcMJEm3XS9tt6-_zzhoOojK-q9MHF7huZg4O1587xhSofxs-KS7BeYxEHKn_10tAkjEIo9QtYUE7zD7JXwGUsvfMMjOqEVW6KuY3ZOmIq_ncKlB4jvbdrduxy1pbky_kvzHWlE9El_N5qveQXyuvNZVMSIEpw8_y5iSxPxKfrVwGY7hBaF40Oph-d2PO7AzKvxEVMamzLvMGBMaRAP_WttBPAUSqTU5uMXwMafryhGdIcQVsDPcGNgMX6E1jzLA",
  "expires_in": 3600,
  "id_token": "eyJhbGciOiJSUzI1NiIsInR5cCI6IkpXVCIsImtpZCI6InIxTGtiQm8zOTI1UmIyWkZGckt5VTNNVmV4OVQyODE3S3gwdmJpNmlfS2MifQ.eyJzdWIiOiI1YzlmNzVjN2NjZjg3YjA1YTkyMWU5YjAiLCJub25jZSI6IjIyMTIxIiwiYXRfaGFzaCI6Ik5kbW9iZVBZOEFFaWQ2T216MzIyOXciLCJzaWQiOiI1ODM2NzllNC1lYWM5LTRjNDEtOGQxMS1jZWFkMmE5OWQzZWIiLCJhdWQiOiI1Y2E3NjVlMzkzMTk0ZDU4OTFkYjE5MjciLCJleHAiOjE1NTQ1NDE0NjksImlhdCI6MTU1NDUzNzg2OSwiaXNzIjoiaHR0cHM6Ly9hdXRoaW5nLmNuIn0.IQi5FRHO756e_eAmdAs3OnFMU7QuP-XtrbwCZC1gJntevYJTltEg1CLkG7eVhdi_g5MJV1c0pNZ_xHmwS0R-E4lAXcc1QveYKptnMroKpBWs5mXwoOiqbrjKEmLMaPgRzCOdLiSdoZuQNw_z-gVhFiMNxI055TyFJdXTNtExt1O3KmwqanPNUi6XyW43bUl29v_kAvKgiOB28f3I0fB4EsiZjxp1uxHQBaDeBMSPaRVWQJcIjAJ9JLgkaDt1j7HZ2a1daWZ4HPzifDuDfi6_Ob1ZL40tWEC7xdxHlCEWJ4pUIsDjvScdQsez9aV_xMwumw3X4tgUIxFOCNVEvr73Fg",
  "refresh_token": "WPsGJbvpBjqXz6IJIr1UHKyrdVF",
  "scope": "openid profile offline_access phone email",
  "token_type": "Bearer"
}
驗(yàn)證 access_token 和 id_token 的合法性

OIDC 默認(rèn)使用 OIDC 應(yīng)用的 secret 對(duì) token 進(jìn)行驗(yàn)證(也就是在創(chuàng)建應(yīng)用時(shí)默認(rèn)選擇 HS256 算法)。 如果你使用 javascript 那么可以使用 jsonwebtoken 進(jìn)行驗(yàn)證:

const jwt = require("jsonwebtoken");
let decoded = jwt.verify(token, );

如果是其他語(yǔ)言,那么你在服務(wù)端需要用 app_secret 作為 HS256 簽名參數(shù)來(lái)計(jì)算簽名和 JWT 中的簽名進(jìn)行對(duì)比,偽代碼如下:

HMACSHA256(
  base64UrlEncode(header) + "." +
  base64UrlEncode(payload),
  "1133fd20c14e4cc29b6ecb71fb8eb952"http:// app_secret
)

如果是 RS256 等非對(duì)稱加密算法,需要使用公鑰驗(yàn)證簽名。Authing 將使用私鑰進(jìn)行簽名,請(qǐng)使用 Authing 的公鑰來(lái)驗(yàn)證簽名:

-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxRijj2seoesv5K0Z+ymR
K7DSDPxdsM2sGQD2ZVhLjLsxZWJtXUXh7ERdUU6OT3BqYZZf7CLIhN6yyNtTOgfg
pLG9HVJd7ZSKzuy2dS7mo8jD8YRtptAJmNFqw6z8tQp5MNG1ZHqp9isKqJmx/CFY
kRdXBmjjj8PMVSP757pkC3jCq7fsi0drSSg4lIxrSsGzL0++Ra9Du71Qe/ODQKU0
brxaI1OKILtfcVPTHTaheV+0dw4eYkSDtyaLBG3jqsQbdncNg8PCEWchNzdO6aaj
Uq4wbOzy/Ctp399mz0SGKfuC5S8gqAFABFT3DH3UD21ZztQZwFEV2AlvF+bcGEst
cwIDAQAB
-----END PUBLIC KEY-----
使用 access_token 換取用戶信息

開(kāi)發(fā)者在自己的服務(wù)中可以使用 access_token 換取用戶信息。根據(jù) scope 的不同,這里的返回信息也會(huì)有所不同,字段符合 OIDC 規(guī)范,字段解釋請(qǐng)參考用戶信息字段含義。 請(qǐng)求鏈接:

GET https://users.authing.cn/oauth/oidc/user/userinfo?access_token=

返回示例:

{
  "sub": "<用戶在 Authing 的唯一標(biāo)識(shí)>",
  "nickname": "Authing",
  "name": "張三",
  "locale": "en-US"
}

更多字段解釋請(qǐng)參考用戶信息字段含義。

接下來(lái)你可能還需要

了解 OIDC 協(xié)議:

理解OIDC流程

控制臺(tái)是你管理所有 Authing 資源的地方,了解 Authing 控制臺(tái)各模塊包含的內(nèi)容和你可以在控制臺(tái)中做的事情:

控制臺(tái)概覽

了解 Authing 提供的多種部署模型,以幫助你選擇該以怎樣的形式部署 Authing:

部署模型

什么是 Authing?

Authing 提供專業(yè)的身份認(rèn)證和授權(quán)服務(wù)。
我們?yōu)殚_(kāi)發(fā)者和企業(yè)提供用以保證應(yīng)用程序安全所需的認(rèn)證模塊,這讓開(kāi)發(fā)人員無(wú)需成為安全專家。
你可以將任意平臺(tái)的應(yīng)用接入到 Authing(無(wú)論是新開(kāi)發(fā)的應(yīng)用還是老應(yīng)用都可以),同時(shí)你還可以自定義應(yīng)用程序的登錄方式(如:郵箱/密碼、短信/驗(yàn)證碼、掃碼登錄等)。
你可以根據(jù)你使用的技術(shù),來(lái)選擇我們的 SDK 或調(diào)用相關(guān) API 來(lái)接入你的應(yīng)用。當(dāng)用戶發(fā)起授權(quán)請(qǐng)求時(shí),Authing 會(huì)幫助你認(rèn)證他們的身份和返回必要的用戶信息到你的應(yīng)用中。

Authing 在應(yīng)用交互中的位置

官網(wǎng):http://authing.cn

小登錄:https://wxapp.authing.cn/#/

倉(cāng)庫(kù):歡迎star,歡迎pr

https://gitee.com/Authi_ng

https://github.com/authing

Demo:

https://sample.authing.cn

https://github.com/Authing/qr...

文檔:https://docs.authing.cn/authing/

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/116273.html

相關(guān)文章

  • 走進(jìn)身份管理-IAM/IDaaS

    摘要:企業(yè)通過(guò)微信微博等為消費(fèi)者提供社交認(rèn)證或其他更多第三方身份提供商。支持多樣身份提供方案良好的身份管理解決方案應(yīng)該支持幾乎所有流行的身份來(lái)源。易于遷移應(yīng)支持移入和移出身份管理解決方案而不受限 IDaaS 身份即服務(wù)是隨著云計(jì)算發(fā)展起來(lái)的新軟件即服務(wù)。 showImg(https://segmentfault.com/img/remote/1460000020177039?w=800&h=...

    gghyoo 評(píng)論0 收藏0
  • IDaaS 云端身份認(rèn)證,你了解這個(gè)新興的市場(chǎng)嗎?

    摘要:而云端身份認(rèn)證就是這樣一個(gè)構(gòu)建軟件基礎(chǔ)設(shè)施的細(xì)分市場(chǎng)。可見(jiàn),云端身份認(rèn)證的市場(chǎng)在海外已經(jīng)被打開(kāi),這同時(shí)也是中國(guó)的機(jī)會(huì)。在中國(guó),是認(rèn)證行業(yè)的領(lǐng)頭羊,其已在新三板上市。這有助于防止身份盜用,消除了個(gè)人數(shù)字身份在不同場(chǎng)景使用時(shí)信息不一致的風(fēng)險(xiǎn)。 showImg(/Users/jack/Authing/images/idaas.jpg); 云端身份認(rèn)證,也叫IDaaS(Identity As ...

    harryhappy 評(píng)論0 收藏0
  • Authing 是什么及實(shí)現(xiàn)了哪些國(guó)際身份協(xié)議

    摘要:是什么提供身份認(rèn)證和授權(quán)服務(wù)。你希望你的用戶能使用微信登錄,同時(shí)你還希望能追蹤到用戶的注冊(cè)來(lái)源,活動(dòng)數(shù)據(jù),以便你做后續(xù)的用戶增長(zhǎng)。 Authing 是什么? Authing 提供身份認(rèn)證和授權(quán)服務(wù)。 我們?yōu)殚_(kāi)發(fā)者和企業(yè)提供用以保證應(yīng)用程序安全所需的認(rèn)證模塊,這讓開(kāi)發(fā)人員無(wú)需成為安全專家。 你可以將以任意語(yǔ)言和任意技術(shù)棧編寫(xiě)的應(yīng)用接入到 Authing,同時(shí)你還可以自定義應(yīng)用程序的登錄方...

    RichardXG 評(píng)論0 收藏0
  • 系統(tǒng)的講解 - SSO單點(diǎn)登錄

    摘要:概念英文全稱,單點(diǎn)登錄。登錄如上述流程圖一致。系統(tǒng)和系統(tǒng)使用認(rèn)證登錄。退出上圖,表示的是從某一個(gè)系統(tǒng)退出的流程圖。與的關(guān)系如果企業(yè)有多個(gè)管理系統(tǒng),現(xiàn)由原來(lái)的每個(gè)系統(tǒng)都有一個(gè)登錄,調(diào)整為統(tǒng)一登錄認(rèn)證。 概念 SSO 英文全稱 Single Sign On,單點(diǎn)登錄。 在多個(gè)應(yīng)用系統(tǒng)中,只需要登錄一次,就可以訪問(wèn)其他相互信任的應(yīng)用系統(tǒng)。 比如:淘寶網(wǎng)(www.taobao.com),天貓網(wǎng)...

    Kylin_Mountain 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

Cobub

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<