javascript
twilio_15分钟内使用Twilio和Stormpath在Spring Boot中进行身份管理
twilio
建筑物身份管理,包括身份驗證和授權? 嘗試Stormpath! 我們的REST API和強大的Java SDK支持可以消除您的安全風險,并且可以在幾分鐘內實現。 注冊 ,再也不會建立auth了!
今天,不到30秒左右的時間,我就能建立一個Twilio帳戶并使用httpie向自己發(fā)送一條短信。 再花幾分鐘的時間(少于5分鐘),我有一個Spring Boot應用程序在做同樣的事情。
在大約同樣的五分鐘內,您可以使用Stormpath的身份管理作為服務平臺進行設置,并學習熱衷于身份驗證。
我們真正生活在非我的計算機(云)服務的黃金時代。
您可以想象在過去15年中使用計算機或其他設備所做的任何事情,現在您可以注冊并在幾分鐘內獲得概念證明。 我記得大約在2007年的某個時候(發(fā)布iPhone 1之后)與SMS經紀人進行了交談。 在完成一捆文書工作之后,等待了大約四個月的時間,并且花了大筆錢,我們準備使用SMS網關編寫代碼。 那時,這是一些不可思議的東西。
曾經嘗試推出自己的身份管理嗎? 你給哈希加鹽了嗎? 或者,只需接受它-您與當時的其他所有人一樣以純文本形式存儲密碼。
在本文中,我們將把Stormpath和Twilio放在一起。 情況如下:當用戶從新設備登錄時,我們希望向他們發(fā)送一條SMS通知以告知他們。 今天,這是使人們了解其帳戶活動的一種常見做法。 如果我收到新地址登錄的通知,但不是我,那么我知道我的帳戶已被盜用。
為了演示的目的,我們將考慮從新設備訪問新的IP地址。
這篇文章的代碼可以在這里找到。
設置風暴路徑
第一步是創(chuàng)建一個Stormpath帳戶。 您可以在此處關注我們的快速入門文檔。 這些是基本步驟:
- 在Stormpath.com注冊
- 點擊確認電子郵件中的鏈接
- 創(chuàng)建一個API密鑰以用于API訪問(將其保存到: ~/.stormpath/apiKey.properties )
設置Stormpath Spring Boot集成
此示例的源代碼可以在此處找到。
現在,不用擔心Twilio的東西-默認情況下它是禁用的。 在下一部分中,我們將集成并啟用Twilio。
通過Stormpath Spring Boot集成,可以輕松地在用戶登錄之前和之后觸發(fā)其他操作。這是我們以后用來發(fā)送Twilio消息的機制。 現在,我們僅要確保登錄后處理程序正在運行。
要使用Stormpath Spring Boot集成,您只需要包含一個依賴項:
<dependency><groupId>com.stormpath.spring</groupId><artifactId>stormpath-thymeleaf-spring-boot-starter</artifactId><version>${stormpath.version}</version> </dependency>在這種情況下,我們將使用Spring Boot + Web MVC + Thymeleaf集成,以便我們可以返回Thymeleaf模板。
要設置我們的postLoginHandler ,我們只需要創(chuàng)建一個暴露一個bean的Spring Boot配置:
@Configuration public class PostLoginHandler{...@Bean@Qualifier("loginPostHandler")public WebHandler defaultLoginPostHandler() {return (HttpServletRequest request, HttpServletResponse response, Account account) -> {log.info("Hit default loginPostHandler with account: {}", account.getEmail());return true;};} }您可以像這樣啟動Spring Boot應用程序:
mvn clean install mvn spring-boot:run現在,您可以瀏覽到: http://localhost:8080/register在Stormpath中創(chuàng)建一個帳戶。 然后,您可以瀏覽到: http://localhost:8080/login 。 您應該在日志輸出中看到以下內容:
2016-09-14 22:37:18.078 ... : Hit default loginPostHandler with account: micah@stormpath.com暈! 我們的登錄后掛鉤正在運行。
在此示例中,我們正在建模的用例是每當用戶從新位置登錄時向用戶發(fā)送文本消息(SMS)。 為此,我們需要用戶的電話號碼。 我們還需要存儲他們從其登錄的位置的數組,以便我們確定他們是否從新位置登錄。
輸入Stormpath CustomData 。 我們很早就知道我們無法捕獲客戶可能擁有的用戶數據的所有用例。 因此,我們?yōu)槊總€一流的Stormpath對象(包括用戶帳戶)附加了10MB的自由格式JSON數據。 那就是CustomData 。
我們像這樣存儲用戶的信息:
{"loginIPs": ["0:0:0:0:0:0:0:1","104.156.228.126","104.156.228.136"],"phoneNumber": "+15556065555" }這是Stormpath管理控制臺中的外觀:
一旦我們將Twilio應用于組合中,我們將回到如何設置CustomData方式。
設置Twilio
Twilio的快速入門可以使您快速啟動并運行。
基本步驟如下:
- 輸入一些基本的注冊信息
- 輸入你的電話號碼
- 提供Twilio電話號碼
- 測試您可以從Twilio電話號碼向您的電話號碼發(fā)送消息
確保您運行測試并且可以發(fā)送消息。 您可以使用curl或httpie從命令行自己進行測試 :
http -f POST \ https://api.twilio.com/2010-04-01/Accounts/<account sid>/Messages.json \ To=<recipient +1...> From=<your twilio phone # - +1...> Body="Hello there..." \ --auth <account sid>:<auth token>現在您知道可以使用您的Twilio帳戶了,將它作為依賴項添加到Spring Boot應用程序中很容易:
<dependency><groupId>com.twilio.sdk</groupId><artifactId>twilio-java-sdk</artifactId><version>(6.0,6.9)</version> </dependency>綁在一起
之前,我們將Spring Boot應用程序設置為在用戶成功登錄后執(zhí)行一項操作。該操作只是為了記錄一些信息。 現在,我們將集成使用相同的登錄后處理程序發(fā)送Twilio消息的功能。
@Bean @Qualifier("loginPostHandler") public WebHandler twilioLoginPostHandler() {return (HttpServletRequest request, HttpServletResponse response, Account account) -> {log.info("Account Full Name: " + account.getFullName());CustomData customData = account.getCustomData();String toNumber = (String) customData.get(phoneNumberIdentifier);List<String> loginIPs = getLoginIPs(customData);String ipAddress = getIPAddress(request);if (loginIPs.contains(ipAddress)) {// they've already logged in from this locationlog.info("{} has already logged in from: {}. No message sent.", account.getEmail(), ipAddress);} else {boolean messageSent = TwilioLoginMessageBuilder.builder().setAccountSid(twilioAccountSid).setAuthToken(twilioAuthToken).setFromNumber(twilioFromNumber).setToNumber(toNumber).send("New login for: " + account.getEmail() + ", from: " + ipAddress);// only save the ip address if the twilio message was successfully sentif (messageSent) {saveLoginIPs(ipAddress, loginIPs, customData);}}return true;}; }第8行和第9行檢索用戶的電話號碼和用戶以前登錄過的地址的列表。 它從用戶的CustomData提取此信息。
假設他們正在從新位置登錄,則第18行將新地址保存回CustomData ,第20行觸發(fā)Twilio消息。
TwilioLoginMessageBuilder在示例中定義,并使用一個流暢的界面。
上面第26行使用的send方法首先檢查以確保正確配置了Twilio,如果是,則嘗試發(fā)送消息:
TwilioRestClient client = new TwilioRestClient(accountSid, authToken);List<NameValuePair> params = new ArrayList<>(); params.add(new BasicNameValuePair("To", toNumber)); params.add(new BasicNameValuePair("From", fromNumber)); params.add(new BasicNameValuePair("Body", msg));MessageFactory messageFactory = client.getAccount().getMessageFactory(); try {Message message = messageFactory.create(params);log.info("Message successfuly sent via Twilio. Sid: {}", message.getSid());return true; } catch (TwilioRestException e) {log.error("Error communicating with Twilio: {}", e.getErrorMessage(), e);return false; }讓我們啟動該應用程序,看看它的實際效果!
mvn clean installTWILIO_ACCOUNT_SID=<your twilio account sid> \ TWILIO_AUTH_TOKEN=<your twilio auth token> \ TWILIO_FROM_NUMBER=<your twilio phone number> \ TWILIO_ENABLED=true \ java -jar target/*.jar點擊前門http://localhost:8080 ,您就有機會登錄。如果查看日志,您會發(fā)現第一次登錄時,您沒有收到任何消息,因為沒有您備案的電話號碼。
2016-09-15 16:48:31.621 INFO: Account Full Name: micah silverman 2016-09-15 16:48:31.750 WARN: No toNumber set. Cannot proceed.
接下來要做的是設置電話號碼:
現在,您可以注銷并再次登錄,您應該會收到Twilio通知:
2016-09-15 16:53:44.599 INFO: Account Full Name: micah silverman 2016-09-15 16:53:46.080 INFO: Message successfully sent via Twilio. Sid: SM9cd7fdfa3f8f463dbdd8f16662c13b5b
協(xié)同增效!
在本文中,我們采用了Stormpath的登錄后處理程序功能,并將其與Twilio的SMS功能結合使用,以產生新的功能,這要比這兩個平臺分別可以完成的功能大。
絕對是服務的黃金時代。
在本文的代碼存儲庫中,還使用了更多的Spring Boot魔術,包括基于配置設置動態(tài)加載defaultLoginPostHandler或twilioLoginPostHandler 。 要使用Twilio處理程序,只需在application.properties文件中設置twilio.enabled=true屬性。
現在,繼續(xù)將一些服務粘合在一起,以獲得樂趣和收益!
學到更多
有興趣了解更多有關使用Spring Boot和Stormpath進行用戶身份驗證的信息嗎? 我們還有其他一些很棒的資源可供您查看:
- Spring Boot和Stormpath的OAuth 2.0令牌管理
- 使用Spring Boot和Heroku在20分鐘內完成Java的單點登錄
- 5個構建Spring Boot API的實用技巧
建筑物身份管理,包括身份驗證和授權? 嘗試Stormpath! 我們的REST API和強大的Java SDK支持可以消除您的安全風險,并且可以在幾分鐘內實現。 注冊 ,再也不會建立auth了!
翻譯自: https://www.javacodegeeks.com/2016/10/identity-management-spring-boot-twilio-stormpath-15-minutes.html
twilio
總結
以上是生活随笔為你收集整理的twilio_15分钟内使用Twilio和Stormpath在Spring Boot中进行身份管理的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: (win7下linux)
- 下一篇: ddos攻击器手机版(ddos攻击防御科