2013-10-14 17 views
0

我有一個單頁面應用程序,當前打開一個標籤到OAuth2身份驗證提供程序。在用戶輸入他們的憑證後,服務器發送一個響應來關閉標籤。 服務器「知道」客戶端現在通過在其上設置會話進行身份驗證。客戶端如何獲得http-bearer標記?

但是,我其實不想使用會話。我想保持應用程序無狀態。我讀到這應該可以通過使用oauth2承載令牌,服務器可以驗證。

客戶端如何獲得這樣的不記名令牌?當我使用iframe或選項卡,以便用戶可以在服務提供商的登錄頁面輸入他們的憑據時,我的javascript永遠不會收到響應。

對於Web中當前的客戶端 - 服務器體系結構,OAuth2與外部提供者(沒有會話)是不可能的嗎?

回答

1

您可能正在考慮使用「Json Web Tokens」而不是常規的「訪問令牌」。 JWT是數字簽名的工件,因此服務器(您的API)可以驗證它們(及其內容)。

單頁面應用程序通常使用OAuth2「隱式」流程。令牌(JWT)直接從授權服務器接收,並且您可以使用它來與API進行驗證。客戶端庫會從最終的響應(通常形式的URL:http://callback/#id_token={the base64 encoded token})提取JWT

你需要檢查你正在使用的AuthZ的服務器實際上可以返回JWTs,你需要在你的服務器包括託管您的API,一個可以驗證它們的令牌處理程序。

注意:如果網頁和API位於不同的域,還需要配置CORS。

起來看看這款this example,使用.NET的WebAPI和返回JWTs授權服務器(ours的例子,但將與任何人合作)。