偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

作者 | 孫嘉瑤

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

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

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

用戶使用角度

自定義界面

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

圖片圖片

Cognito Hosted UI

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

圖片圖片

Auth0 Hosted UI

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

登錄方式

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

圖片圖片

Cognito支持的外部登錄種類

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

圖片圖片

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

圖片圖片

Auth0支持的社交賬號登錄種類

用戶安全保障

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

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

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

圖片圖片

Auth0支持的MFA種類 

用戶偏好

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

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

開發(fā)者角度

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

用戶管理

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

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

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

流程自定義

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

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

圖片圖片

Auth0 Actions可視化編輯界面

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

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

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

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

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

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

圖片圖片

Auth0 lazy migration流程圖

SDK支持

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

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

小結(jié)

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

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

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

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

2011-04-21 09:29:27

家用打印機

2021-10-24 08:15:44

Web身份認證測試框架

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

打印機

2010-08-18 11:26:56

CISCO路由器

2015-02-13 09:47:27

華為認證思科認證

2009-04-27 10:50:03

思科路由器選購

2020-08-07 13:44:30

殺毒軟件方案

2010-10-22 09:25:38

服務(wù)器虛擬化

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

2018-09-09 15:38:55

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

2016-12-02 12:48:33

2016-08-02 09:53:05

云計算

2009-07-16 14:50:57

IT管理網(wǎng)管軟件摩卡
點贊
收藏

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