日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

15分钟内使用Twilio和Stormpath在Spring Boot中进行身份管理

發布時間:2023/12/3 javascript 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 15分钟内使用Twilio和Stormpath在Spring Boot中进行身份管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

建筑物身份管理,包括身份驗證和授權? 嘗試Stormpath! 我們的REST API和強大的Java SDK支持可以消除您的安全風險,并且可以在幾分鐘內實現。 注冊 ,再也不會建立auth了!

今天,不到30秒左右的時間,我就能建立一個Twilio帳戶并使用httpie向自己發送一條短信。 再花幾分鐘的時間(少于5分鐘),我有一個Spring Boot應用程序在做同樣的事情。

在大約同樣的五分鐘內,您可以使用Stormpath的身份管理作為服務平臺進行設置,并學習熱衷于身份驗證。

我們真正生活在非我的計算機(云)服務的黃金時代。

您可以想象在過去15年中使用計算機或其他設備所做的任何事情,現在您可以注冊并在幾分鐘內獲得概念證明。 我記得大約在2007年的某個時候(在iPhone 1之后)與SMS經紀人交談。 在完成了一大堆文書工作,等待了大約四個月并準備大量資金之后,我們準備使用SMS網關編寫代碼。 那時,這是一些不可思議的東西。

曾經嘗試推出自己的身份管理嗎? 你給哈希加鹽了嗎? 或者,只要承認這一點–您就像其他人一樣以純文本形式存儲密碼。

在本文中,我們將把Stormpath和Twilio放在一起。 情況如下:當用戶從新設備登錄時,我們希望向他們發送一條SMS通知以告知他們。 今天,這是使人們了解其帳戶活動的一種常見做法。 如果我收到來自新地址的登錄通知,但不是我,那么我知道我的帳戶已被盜用。

為了演示的目的,我們將考慮從新設備訪問新的IP地址。

這篇文章的代碼可以在這里找到。

設置風暴路徑

第一步是創建一個Stormpath帳戶。 您可以在此處關注我們的快速入門文檔。 這些是基本步驟:

  • 在Stormpath.com注冊
  • 點擊確認電子郵件中的鏈接
  • 創建一個API密鑰以用于API訪問(將其保存到: ~/.stormpath/apiKey.properties )

設置Stormpath Spring Boot集成

此示例的源代碼可以在此處找到。

現在,不用擔心Twilio的東西-默認情況下它是禁用的。 在下一部分中,我們將集成并啟用Twilio。

通過Stormpath Spring Boot集成,可以輕松地在用戶登錄之前和之后觸發其他操作。此機制是我們稍后用來發送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 ,我們只需要創建一個暴露一個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中創建一個帳戶。 然后,您可以瀏覽到: http://localhost:8080/login 。 您應該在日志輸出中看到以下內容:

2016-09-14 22:37:18.078 ... : Hit default loginPostHandler with account: micah@stormpath.com

頭暈! 我們的登錄后掛鉤正在運行。

在此示例中,我們正在建模的用例是每當用戶從新位置登錄時向用戶發送文本消息(SMS)。 為此,我們需要用戶的電話號碼。 我們還需要存儲他們已登錄的位置的數組,以便我們確定他們是否正在從新位置登錄。

輸入Stormpath CustomData 。 我們很早就知道我們無法捕獲客戶可能擁有的用戶數據的所有用例。 因此,我們為每個一流的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電話號碼發送到您的電話號碼

確保您運行測試并且可以發送消息。 您可以使用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應用程序設置為在用戶成功登錄后執行一項操作。該操作只是記錄一些信息。 現在,我們將整合使用相同的登錄后處理程序發送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行觸發Twilio消息。

TwilioLoginMessageBuilder在示例中定義,并使用一個流暢的界面。

上面第26行使用的send方法首先檢查以確保正確配置了Twilio,如果是,則嘗試發送消息:

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 ,您就有機會登錄。如果查看日志,您會發現第一次登錄時,您沒有收到消息,因為沒有您備案的電話號碼。

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

協同增效!

在本文中,我們采用了Stormpath的登錄后處理程序功能,并將其與Twilio的SMS功能相結合,以產生新的功能,這要比這兩個平臺分別可以完成的功能大。

絕對是服務的黃金時代。

在本文的代碼存儲庫中,還使用了更多的Spring Boot魔術,包括基于配置設置動態加載defaultLoginPostHandler或twilioLoginPostHandler 。 要使用Twilio處理程序,只需在application.properties文件中設置twilio.enabled=true屬性。

現在,繼續將一些服務粘合在一起,以獲得樂趣和收益!

學到更多

有興趣了解更多有關使用Spring Boot和Stormpath進行用戶身份驗證的信息嗎? 我們還有其他一些很棒的資源可供您查看:

  • 通過Spring啟動和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

總結

以上是生活随笔為你收集整理的15分钟内使用Twilio和Stormpath在Spring Boot中进行身份管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。