自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何選擇一款身份認(rèn)證服務(wù)?

開發(fā)
Auth0和Cognito它們的區(qū)別在哪里,如果想要構(gòu)建一個(gè)認(rèn)證服務(wù),應(yīng)該如何選擇供應(yīng)商呢?本文將從用戶使用的角度以及開發(fā)者的角度進(jìn)行對(duì)比。

作者 | 孫嘉瑤

OAuth 2.0是允許用戶授權(quán)客戶端代表其訪問受保護(hù)資源的協(xié)議,例如在使用某些微信小程序時(shí)會(huì)彈出對(duì)話框?qū)で竽愕氖跈?quán),基于OAuth2.0協(xié)議授權(quán)后該小程序就能訪問你允許其訪問的資源,比如頭像、用戶名等。有很多公司基于此構(gòu)建了身份認(rèn)證管理系統(tǒng)讓使用者能夠快速構(gòu)建認(rèn)證服務(wù),常見的有Amazon Cognito, Auth0, Firebase Authentication, Ping Identity,Azure Active Directory等。

我曾經(jīng)在項(xiàng)目中同時(shí)接觸到了兩個(gè)市場(chǎng)份額占比大的基于云的身份管理服務(wù),Auth0和Cognito,兩者都能提供快速搭建身份認(rèn)證和授權(quán)的服務(wù),包括創(chuàng)建客戶端,維護(hù)用戶池,提供多種登錄和多重身份認(rèn)證方式等。

但它們的區(qū)別在哪里,如果想要構(gòu)建一個(gè)認(rèn)證服務(wù),應(yīng)該如何選擇供應(yīng)商呢?本文將從用戶使用的角度以及開發(fā)者的角度進(jìn)行對(duì)比。

用戶使用角度

自定義界面

當(dāng)用戶使用一個(gè)認(rèn)證系統(tǒng)時(shí),界面是否簡(jiǎn)潔容易操作,提供的登錄方式是否符合需求是用戶首先注意到的內(nèi)容。并且客戶端往往要求自行定制界面,例如添加公司logo,定義界面顏色樣式等。在這方面,Cognito和Auth0都提供了基于不同客戶端定制UI的功能。

圖片圖片

Cognito Hosted UI

Cognito的UI定制功能自定義范圍有限,只能替換顏色,logo樣式,按鈕和輸入框樣式。

圖片圖片

Auth0 Hosted UI

Auth0的可定制范圍廣,在universal login功能中可以定制登錄、注冊(cè)、忘記密碼、MFA界面的顏色、字體、logo、排列方式,并且提供了liquid模版,可以根據(jù)客戶端加載不同的界面樣式。在此基礎(chǔ)上如果有其他定制化的需求,Auth0還基于lock和auth0.js SDK提供了三種模版:Lock, Lock(passwordless)和Custom Login Form方便進(jìn)行自定義。

登錄方式

在提供的登錄方式方面,Cognito提供的有用戶名和密碼登錄,社交賬號(hào)登錄以及企業(yè)登錄,涵蓋Google,Apple,F(xiàn)acebook,Amazon,SAML和OIDC等。

圖片圖片

Cognito支持的外部登錄種類

在此基礎(chǔ)上,Auth0提供了52種社交賬號(hào)登錄方式,在企業(yè)登錄方面還提供了Google workspace, Okta,Azure, Ping, ADFS, LDAP等方式,只需提供client ID和secret就能完成配置,因此在利用社交賬號(hào)登錄和企業(yè)登錄方面Auth0配置更方便,提供的選擇更多。此外,Auth0還提供了passwordless登錄和biometrics登錄,這些無密碼身份認(rèn)證方式提升了用戶賬戶的安全性,也為用戶省去了管理密碼的麻煩。

圖片圖片

Auth0支持的企業(yè)登錄種類

圖片圖片

Auth0支持的社交賬號(hào)登錄種類

用戶安全保障

除此之外,用戶還會(huì)關(guān)心自己的賬戶是否安全。Auth0和Cognito都提供了多種方式保障用戶安全,Auth0提供了Bot Detection,IP throttling, Brute-force Protection, Breached Password Detection和多重身份驗(yàn)證(MFA),Cognito security提供了MFA和IP限制兩種方式。 

MFA是除了登錄認(rèn)證之外的另一種驗(yàn)證身份并保障賬戶安全的措施,在涉及到身份驗(yàn)證,特別是在進(jìn)行支付,添加新設(shè)備,或者長(zhǎng)時(shí)間不登錄賬戶等情況下驗(yàn)證用戶的合法性更是十分重要。

Cognito MFA可以提供了SMS與one-time-password(OTP)兩種方式,可以選擇通過短信或是郵件驗(yàn)證。Auth0 MFA提供了FIDO security keys, FIDO device biometrics, OTP, auth0 guardian, 短信,郵件,recovery code,DUO security等方式。相比之下,Auth0提供了更多高安全性和高可用性的驗(yàn)證方式。

圖片圖片

Auth0支持的MFA種類 

用戶偏好

最后,在用戶偏好方面,Auth0提供了更方便的屬性定義方式。Auth0用戶屬性包括標(biāo)準(zhǔn)屬性,user_metadata和app_metadata。用戶可以在user_metadata內(nèi)自定義各種屬性而不需要更改userpool屬性,例如基于metadata可以完成例如顯示偏好顏色,添加用戶昵稱等各種自定義屬性。在app_metadata中可以添加對(duì)系統(tǒng)產(chǎn)生影響的屬性,例如,如果想對(duì)特定用戶開啟MFA,就可以在這些用戶的app_metadata中添加MFA屬性,從而達(dá)到個(gè)體化定制的效果。

Cognito的用戶屬性包括標(biāo)準(zhǔn)屬性和自定義屬性,如果某一用戶需要添加某種新的自定義屬性,則需要?jiǎng)?chuàng)建新的userpool并在屬性中添加對(duì)應(yīng)字段。并且由于cognito userpool不支持?jǐn)?shù)據(jù)導(dǎo)出,因此只能通過trigger將已經(jīng)存在于舊userpool的用戶在登錄時(shí)導(dǎo)入到新的之中,為用戶管理增添了麻煩。

開發(fā)者角度

從服務(wù)開發(fā)和維護(hù)者的角度,可以從以下幾個(gè)方面來比較兩個(gè)身份認(rèn)證管理系統(tǒng)。

用戶管理

在用戶管理方面,用戶在授權(quán)應(yīng)用程序訪問信息的過程中,可能會(huì)用不同的登錄方式進(jìn)行登錄,例如使用同一個(gè)gmail郵箱進(jìn)行g(shù)oogle登錄,并用該郵箱進(jìn)行用戶名密碼登錄,針對(duì)這種情況應(yīng)該如何管理呢?

Auth0中,不同來源的用戶通過connection區(qū)分,例如通過social登錄,用戶名密碼登錄和passwordless登錄會(huì)被劃分為三種connection。不同connection可以理解為不同數(shù)據(jù)庫,同一個(gè)郵箱因注冊(cè)方式不同進(jìn)入不同數(shù)據(jù)庫中,這些賬戶可以進(jìn)行關(guān)聯(lián)。

在用戶登錄時(shí),如果該郵箱在其他connection中存在另外的用戶,就會(huì)詢問用戶是否進(jìn)行關(guān)聯(lián),用戶在成功登錄另外賬號(hào)后,兩個(gè)賬號(hào)就能關(guān)聯(lián)起來,系統(tǒng)將視兩個(gè)賬號(hào)為同一用戶,這樣能方便用戶的使用和管理。Auth0提供了Auth0 Account Link官方插件完成賬戶關(guān)聯(lián)功能。同樣,在Cognito中通過外部登錄的用戶會(huì)被劃分到不同的group中,但沒有提供用戶關(guān)聯(lián)功能,需要使用者自己實(shí)現(xiàn)。

流程自定義

在實(shí)現(xiàn)登錄或注冊(cè)等流程中可能會(huì)遇到添加自定義功能的情況,比如針對(duì)部分用戶開啟MFA驗(yàn)證,或者給用戶添加權(quán)限等,此時(shí)就會(huì)需要在特定階段執(zhí)行自己的邏輯。在Cognito中這種功能稱為Trigger。Trigger的本質(zhì)是lambda函數(shù),可以通過event在身份認(rèn)證的不同節(jié)點(diǎn)觸發(fā)自定義的lambda函數(shù)達(dá)到自定義用戶登錄,注冊(cè),認(rèn)證等流程的效果。因?yàn)槭莑ambda函數(shù),因此可以使用所有l(wèi)ambda支持的語言編寫。

Auth0添加自定義邏輯的方式有三種,Rules, Hooks和Actions,三者的實(shí)現(xiàn)方式都基于node.js,因此只能用js編寫。Rules和Hooks是初始版本, 現(xiàn)在更推薦使用Actions。它可以在用戶登錄,注冊(cè),修改密碼等階段應(yīng)用,并且還可以與外部庫集成提升可擴(kuò)展性。在編寫邏輯時(shí)Auth0提供了模版方便自定義。另外它支持可視化的對(duì)不同邏輯的執(zhí)行節(jié)點(diǎn)和順序進(jìn)行調(diào)整。此外,Actions的每一次部署都會(huì)創(chuàng)建一個(gè)新的version, 如果新的version出現(xiàn)問題,可以迅速切換回舊version。

圖片圖片

Auth0 Actions可視化編輯界面

系統(tǒng)監(jiān)測(cè)

在系統(tǒng)維護(hù)中,監(jiān)控對(duì)于保證一個(gè)系統(tǒng)可靠性和可用性以及監(jiān)測(cè)系統(tǒng)性能方面有十分重要的作用。因?yàn)镃ognito是AWS提供的服務(wù),因此可以方便的和其他AWS服務(wù)連接,比如CloudTrail, CloudWatch等。Auth0監(jiān)控方法包括logs和streams。Logs中記錄了tenant中所有行為的日志,包括對(duì)client的操作和用戶進(jìn)行的操作等,可以通過filter篩選某一類型的logs。Streams可以將所有日志導(dǎo)出并在其他系統(tǒng)里進(jìn)行進(jìn)一步操作,例如可以與Amazon EventBridge,Datadog, Splunk,Sumo Logic等各種事件分析服務(wù)連接。另外,如果想查詢某一用戶的操作記錄,Auth0中可以在用戶的history中直接查詢。

數(shù)據(jù)遷移

另外,隨著不同供應(yīng)商提供的產(chǎn)品發(fā)生變化,開發(fā)者可能會(huì)在不同產(chǎn)品間切換來滿足需求。這就要求身份認(rèn)證管理系統(tǒng)能夠很好的支持客戶端信息遷移,數(shù)據(jù)導(dǎo)入導(dǎo)出等。Auth0支持Client Id和Client Secret導(dǎo)入,這樣即便是更換了平臺(tái),也能保證客戶端不受影響正常使用。

用戶數(shù)據(jù)遷移方面,Cognito不支持用戶數(shù)據(jù)導(dǎo)出但Auth0支持,并且可以對(duì)密碼進(jìn)行加密。在數(shù)據(jù)導(dǎo)入中,Cognito和Auth0都提供了外部數(shù)據(jù)庫導(dǎo)入的功能,Bulk migration指一次性將用戶數(shù)據(jù)全部導(dǎo)入到新服務(wù)的數(shù)據(jù)庫中,這可能會(huì)導(dǎo)致用戶需重新登錄。Lazy migration/ Automatic migration指的是用戶在登錄時(shí)將數(shù)據(jù)遷移到新系統(tǒng)中。兩者都可以通過bulk migration或lazy migration的方式導(dǎo)入用戶數(shù)據(jù)。

Auth0提供了插件幫助使用者進(jìn)行數(shù)據(jù)導(dǎo)入導(dǎo)出,進(jìn)行在導(dǎo)入數(shù)據(jù)時(shí)Auth0會(huì)對(duì)密碼進(jìn)行加密。Auth0還支持session migration, 因此用戶在切換identity provider時(shí)不會(huì)感受到賬號(hào)被登出。此外,Auth0還提供了外部數(shù)據(jù)庫連接功能,即不使用Auth0提供的userpool,而是使用自己維護(hù)的數(shù)據(jù)庫作為userpool。這為數(shù)據(jù)導(dǎo)入導(dǎo)出和切換認(rèn)證服務(wù)供應(yīng)商帶來了很大的便捷。

圖片圖片

Auth0 lazy migration流程圖

SDK支持

最后,在開發(fā)過程中,Cognito提供了Amplify SDK,它提供了兩種方式構(gòu)建應(yīng)用,一種是使用authentication UI components, 針對(duì)React, Vue, Angular和React Native都預(yù)置了UI組件。另一種是使用amplify的Auth進(jìn)行sign up/sign in等身份驗(yàn)證流程。

Auth0同樣提供了多種SDK,包括針對(duì)SPA、Web應(yīng)用、API、移動(dòng)端、Management API的ADK。并且針對(duì)不同語言和框架都有支持,例如Web應(yīng)用的SDK包括Express, Java, Next.js, PHP, Python, Ruby等不同版本。此外Auth0有良好的社區(qū)支持,它提供了Auth0 Community供開發(fā)者交流,也有support team進(jìn)行問題解答。

小結(jié)

綜上,在用戶體驗(yàn)方面,Auth0擁有高度定制化的UI并提供了豐富的認(rèn)證方式,各種無密碼登錄提高了用戶體驗(yàn)和賬號(hào)安全性。

在開發(fā)者使用過程中,Auth0和Cognito都能完成基本功能的快速配置,但Auth0提供的功能和模版更多,在實(shí)現(xiàn)自定義邏輯方面更加快捷,同時(shí)在marketplace里提供了大量插件方便使用。而相比之下在Cognito中必須要自己實(shí)現(xiàn),增加了開發(fā)時(shí)間。

此外,Auth0擁更為清晰的文檔,支持團(tuán)隊(duì)反饋更加及時(shí),新功能從提出到上線周期也更短。因此,如果僅需要基本的認(rèn)證,Auth0和Cognito都能滿足需求,Cognito因較便宜的價(jià)格更勝一籌。但如果需要較好的用戶體驗(yàn)或需要實(shí)現(xiàn)豐富的功能,則Auth0是更好的選擇。

責(zé)任編輯:趙寧寧 來源: Thoughtworks洞見
相關(guān)推薦

2021-10-24 08:15:44

Web身份認(rèn)證測(cè)試框架

2011-04-21 09:29:27

家用打印機(jī)

2014-08-29 15:34:27

Web安全

2009-05-11 15:12:03

網(wǎng)管軟件產(chǎn)品摩卡軟件

2011-01-11 10:29:46

2011-04-28 09:58:04

打印機(jī)

2010-08-18 11:26:56

CISCO路由器

2015-02-13 09:47:27

華為認(rèn)證思科認(rèn)證

2009-04-27 10:50:03

思科路由器選購

2010-10-22 09:25:38

服務(wù)器虛擬化

2020-08-07 13:44:30

殺毒軟件方案

2017-03-06 11:02:59

產(chǎn)品軟件Power Desig

2020-03-24 10:43:24

微服務(wù)架構(gòu)數(shù)據(jù)

2010-08-13 14:25:29

思科路由器

2014-12-16 10:11:22

2023-12-28 18:40:42

2016-08-02 09:53:05

云計(jì)算

2009-07-16 14:50:57

IT管理網(wǎng)管軟件摩卡

2018-09-09 15:38:55

SD-WAN網(wǎng)絡(luò)WAN

2016-12-02 12:48:33

點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)