2017-02-03 59 views
0

目前我面臨以下問題:智威湯遜:在多域級別處理令牌認證

我正在用獨立登錄視圖構建應用程序。我們假設他們都在不同的域上運行。我的登錄視圖與發佈JWT令牌的服務器上的REST服務進行通信。

使用此發佈的令牌,用戶現在應該能夠查看(轉發給)應用程序。但是,這個應用程序 - 如上所述 - 運行在另一個域(或可能是子域)上。

在我心目中,我試過如下:

  1. 令牌是由服務器發出。散列存儲在數據庫中,散列發佈給用戶。散列通過URL傳遞給應用程序,應用程序檢查散列。

  2. 令牌由服務器發出。令牌傳輸給用戶。當用戶現在打開應用程序(或轉發給...)時,令牌也應該在那裏傳輸。我不知道該怎麼辦...

這兩個都不是理想的方式,我知道。但我真的不知道我該怎麼做到這一點......

我希望任何人都能夠幫助我解決問題嗎? 如果有什麼不清楚的地方,只是評論。

在此先感謝!

回答

1

Facebook,Twitter,Google等通過重定向(302重定向請求)提供OAuth。基本上,如果用戶擁有有效令牌,則應用程序啓動一切正常,否則,如果登錄成功,它將從身份提供商(例如Google)打開登錄頁面並返回令牌。

此圖顯示的一般步驟:

https://www.soapui.org/soapui/media/images/stories/oauth2/oauth2flow.png

希望這有助於。

假設您在兩個不同的域中有兩個服務。一個是你的身份提供者,它產生令牌並持有令牌< - >用戶分配(我們稱之爲:idp.my.company)。另一個是任何應用程序,但需要通過idp.my.company(我們稱之爲app.my.company)登錄。

您有兩種情況: 1.登錄前沒有令牌。 2.使用令牌登錄。

  1. 請求GET:app.my.company

  2. 迴應302:移動到:idp.my.company

  3. [由於重定向而自動發生] GET:idp.my.company/login.html。

  4. 響應200 OK:idp.my.company/login.html

    • 用戶將看到您的IDP-服務的登錄頁面和進行登錄。
  5. 請求POST:idp.my.company/login.html(或其他)

    • 用戶發了國書AQUIRE令牌
  6. 響應302重定向:如果登錄成功,返回令牌,現在重定向到您之前提供的原始站點(app.my.company)。

  7. 請求GET:app.my.company/afterlogin.html

    • 頭包含一個有效的令牌
  8. 響應200 OK:現在app.my.company服務需要檢查令牌是否有效,如果爲真則返回200 OK,否則再次重定向到IDP(從第2步開始)。

這應該是它。可能有錯誤,但您應該對過程有一個一致的畫面,並掌握如何實施它。這些步驟涵蓋情景1和2.

+0

事實上,「我」是身份提供者。我不會使用外部服務:-( – sebastian

+0

是的,我知道,但解決方案是一樣的,它很容易整合,我現在在我的公司也有同樣的問題,你只是幫我解決了我的問題: )。你理解這種方法的問題在哪裏?也許我可以更具體一些。 – sascha10000

+0

如果我理解你是正確的:1.如果用戶打開應用程序並且有一個有效的標記,則一切正常。 2.如果用戶沒有有效的令牌,他將被重定向到登錄(直到此處:罰款!),使用憑據登錄並獲取令牌。 JWT令牌?這個令牌如何「轉移」迴應用程序? 302會如何發生?我只是做聚合物登錄... – sebastian