2017-08-27 78 views
3

我已經編寫了幾個服務於RESTful API的Spring 4後端Web應用程序。我甚至設法通過Spring Web Security來保證這些安全。使用AWS IAM或Cognito的Spring Security

在一個案例中,我們已經安裝了自己的OpenAm實例。轉到客戶端用戶界面的用戶可以登錄OpenAM,並且客戶端Web應用程序在cookie中獲取令牌。我們將該令牌傳遞給頭中的後端,然後Spring Security使用CustomeUserDetailsS​​ervice來檢查該令牌是否對OpenAM有效。如果是這樣,我們在Spring安全上下文中創建一個用戶,分配角色,然後我們看看這些角色是否對API有效。如果是這樣,則API執行,否則用戶將獲得401安全錯誤。我相信這是OAuth2。

我們還設法與Okta完全相同的事情。我們有我們自己的客戶端Web用戶界面和我們自己的登錄頁面UI向Okta發出呼叫並獲取兩(2)個令牌。我們連接這些令牌並將其傳遞給後面的程序,這個程序與我們上面描述的程序相同。我也認爲這是Oauth2。

我現在正在開發一個新項目,這次我想使用AWS IAM來保護我的Web應用程序,因爲前端和後端將託管在AWS EC2實例上。

我一直在網上尋找如何做到這一點。有一個AWS IAM SDK,並且有AWS Cognito。我最初對IAM的看法並沒有顯示Oauth2,我看到了OpenID和SAML。我知道我對OpenID vs. Oauth2與SAML缺乏認識。

所以,我要尋找的任何環節的任何代碼庫,或示例代碼,或文件,這將幫助我安全使用AWS IAM和/或Cognito我的後端API的使用Spring Security。順便說一下,我不想使用Spring API Gateway,因爲Spring Web Security已經爲我做了這些。

在此先感謝您的幫助!

回答

1

好吧,我做了一些我自己的研究就這個問題和從AWS網站我得到這個:

AWS身份和訪問管理(IAM),使您能夠以AWS服務和資源的安全 控制訪問爲您的用戶。使用 IAM,您可以創建和管理AWS用戶和組,並使用 權限,允許和拒絕他們對AWS資源

獲取,但我不是找這個。我有一個網絡應用程序,我也可能有一個移動端。我只是不希望有寫的用戶管理,或處理我自己的登錄會話和授權等,所以,我覺得在這種情況下:

亞馬遜Cognito可以讓你輕鬆地添加用戶註冊和正負號在您的 手機和網絡應用程序。藉助Amazon Cognito,您還可以選擇通過社交身份提供商(例如Facebook, Twitter或亞馬遜)以及SAML身份解決方案或使用您自己的身份系統對用戶進行身份驗證 。此外,Amazon Cognito可讓您在用戶設備上本地保存數據 ,使您的應用程序即使在 設備脫機時也能正常工作。然後,您可以同步所有設備上的數據,以使其應用程序體驗保持一致,而不管其使用的設備是否使用 。

與亞馬遜Cognito,你可以專注於創造偉大的應用程序體驗的 而不必擔心建設,保護和縮放的解決方案 來處理用戶管理,認證,並在設備間同步。

所以,AWS Cognito是...

+1

你可能想看看https://github.com/kdgregory/example-cognito-java和http://blog.kdgregory。 COM/2016/12 /服務器端認證與 - amazon.html。作者已經對Cognito進行了分析,以瞭解用Java編寫的基本服務器端應用程序。 – sdbol

+0

太棒了!我會看看這個文檔。謝謝! – tjholmes66