2016-02-16 42 views
3

如何在多個網站之間共享單個JWT令牌?我假設第一件事就是在所有網站上都有相同的祕密。多個網站的JWT令牌

如果用戶在網站A上登錄並生成令牌,我想在完全不同的域上對網站B使用相同的令牌。

可以這樣做嗎?

+0

我對使用單個JWT實現單點登錄有類似的想法。問題是如何在用戶發送請求之前爲每個應用程序存儲JWT。實際上,通過'curl'命令很容易驗證這個想法,但很難在'localStorage'中共享JWT而不是'Cookie'。你現在有一些好消息嗎? – Yang

回答

5

您可以做什麼,但不能與單一智威湯姆令牌。 JWT令牌旨在用於受衆(aud)聲明指定的某個服務或應用程序。您不能對另一個應用程序或服務使用相同的標記。

通常情況下,您的SSO方案正常工作,即用戶登錄到令牌頒發(授權)服務器。只要該會話有效,用戶就可以獲取服務器可以爲令牌頒發的所有應用程序的令牌。

因此,當用戶登錄到第一個應用程序時,授權服務器會設置一個cookie來建立會話。當用戶導航到第二個應用程序時,應用程序將他/她重定向到授權服務器進行身份驗證。授權會檢測會話cookie並且不會提示用戶再次登錄,但會爲第二個應用程序發佈新的JWT令牌。

+0

如果我根本不想使用cookie,那該怎麼辦?我知道JWT令牌可以使用無狀態(無需服務器來了解它)。我的想法是:當用戶在授權服務器上登錄時,服務器應該生成所有應用程序所需的所有令牌,當用戶訪問應用程序B時,它將已經存儲令牌。這是否有意義? – Cristian

+0

很明顯,如果你擁有授權服務器,你可以做任何你想做的事情。但即使授權服務器使用cookie來支持會話,這並不意味着您的Web API必須使用Cookie。重要的是,授權服務器以某種方式能夠在不提示他輸入憑證的情況下對用戶進行身份驗證。 – MvdD