【API進階之路6】一個技術盲點,差點讓整個專案翻車
上次教了實習生一個方案之後,這小子跟運營妹子的關係是越走越近,時不時地撒把狗糧,在我司真正實現了研發運營一家親~(上回你沒看?戳上文劇情回顧:)
這回想跟大家聊的,是最近一個可以說有些驚心動魄的專案。自從我開始在自學API的技術解決方案之後,我就變成了公司的雲伺服器技術專家,老闆或運維部門想要查詢個資料什麼的都來找我。
近期有一個運營專案的系統正在開發中,運營方規劃了一個資料BI模板,列出了需要監測和分析的資料維度,老闆乾脆讓我每週出一份資料包表來支援各方的資料獲取和資料分析。
讓研發出資料包表?這不是逼著李逵繡花麼?但是,我能輕易拒絕嗎?前幾回高光時刻帶來的成就感和光環還沒褪去呢,不能慫!於是我提了一個方案:可以把雲伺服器的監控儀表內嵌到我們自己的系統裡,這樣大家可以隨時查詢,也方便。
老闆聽了這個方案表示很開心,並同意加入到專案排期中,資料查詢功能與系統同期上線,以便及時跟蹤運營結果。在老闆的笑容裡,我看到季度獎金在向我招手。
說幹就幹,執行力我們還是有的。用1天的時間就把程式寫完了,在測試的時候發現了一個問題,資料過不來!因為透過內嵌系統登陸雲伺服器需要經過各種認證,步驟多不說,如果要想實現人人可查詢還存在洩密的危險。
這可怎麼辦,系統上線的日期臨近,不能因為我這部分影響到專案進展啊!當初拍著胸脯提(chui)的方(niu)案(13),難道就要失敗了?
不行,再查查!我專門聯絡了華為雲的技術專家,得知可以透過IAM自定義代理免密登入到雲服務Console頁面,省去認證環節,直接登陸雲伺服器進行資料查詢和獲取。
那怎麼做免密登入呢?他給了我一份文件,內容是這樣的:
一、前提條件
步驟 1:建立賬號I**mainA下的IAM使用者userB,並授予Security Administrator和Agent Operator許可權(全域性服務-全域性專案)。
將userB的使用者名稱和密碼配置到企業系統的配置檔案中,密碼建議加密儲存,以便獲取認證token並進一步呼叫IAM其他Open API。
備註:有關建立IAM使用者和授權相關操作請參見:(https://support.huaweicloud.com/usermanual-iam/zh-cn_topic_0046611303.html) 和 (https://support.huaweicloud.com/usermanual-iam/zh-cn_topic_0046611269.html)
步驟2:建立聯邦代理所需委託IAMAgency。
委託型別選擇“普通賬號”,委託的賬號填寫“DomainA”。
備註:有關建立委託相關操作請參見:(https://support.huaweicloud.com/usermanual-iam/zh-cn_topic_0046613147.html)
二、華為雲聯邦代理登入
步驟1:呼叫IAM API獲取STS token
1)使用IAM全域性域名(iam.myhuaweicloud.com)呼叫IAM服務的API(POST /v3.0/OS-CREDENTIAL/securitytokens)獲取STS token。
https://iam.myhuaweicloud.com/v3.0/OS-CREDENTIAL/securitytokens
請求示例
{ "auth": { "identity": { "assume_role": { "agency_name": "IAMAgency", "domain_name": "I**mainA", "duration-seconds": 3600, "session_user": { "name": "SessionUserName" } }, "methods": [ "assume_role" ] } } }
2)獲取並記錄請求響應體中的STS token資訊:credential.access , credential.secret, credential.securitytoken
響應示例
<br style="">
{ "credential": { "access": "E6DX0TF2ZREQ4ZAVM5CS", "expires_at": "2020-01-08T02:56:19.587000Z", "secret": "w9ePum0qdfac39ErLD0UdjofYkqort6Iw2bmR6Si", "securitytoken": "gQpjbi1ub3J0aC0..." } }
步驟2:呼叫IAM API獲取logintoken
1)使用IAM全域性域名(iam.myhuaweicloud.com)呼叫IAM服務的API(POST /v3.0/OS-AUTH/securitytoken/logintokens)獲取logintoken。
傳送一個POST請求。
POST https://iam.myhuaweicloud.com/v3.0/OS-AUTH/securitytoken/logintokens
請求示例
{ "auth": { "securitytoken": { "access": "LUJHNN4WB569PGAPBDFT", "id": "gQpjbi1ub3J0a...", "secret": "7qtrm2cku0XubixiVkBOcvMfpnu7H2mLNCUsuFR8" } } }
2)獲取請求響應頭中的X-Subject-LoginToken資訊。
透過委託獲取臨時訪問金鑰和securitytoken且請求體中填寫session_user.name引數。
返回示例
{ "logintoken": { "assumed_by": { "user": { "domain": { "id": "0659ef9c9c80d4560f14c009acf9c4a0", "name": "I**mainB" }, "id": "0659ef9d4d00d3b81f26c009fee32b57", "name": "IAMUserB", "password_expires_at": "2020-02-16T02:44:57.000000Z" } }, "domain_id": "05262121fb00d5c30fbec013bc17a4a0", "expires_at": "2020-01-23T03:27:26.728000Z", "method": "federation_proxy", "session_id": "0012c8e6adda4ce787e90585d10e3e63", "session_name": "SessionUserName", "user_id": "07826f367b80d2474ff9c013a48903ee", "user_name": "I**mainA/IAMAgency" } }
步驟3:構建聯邦代理登入地址,完成免密登入
聯邦代理登入地址的構建規則為:
構建引數說明:
- {target_console_url}為目的雲服務console地址的urlencode編碼結果。
- {logintoken}為步驟2中獲取到的logintoken的urlencode編碼結果。
- {enterprise_system_loginURL}是選填引數,為企業客戶自身的登入系統地址的urlencode編碼結果。
按照文件的指引,我最終順利解決了這個問題,專案如期上線,運營方也可以透過免密登陸自己查詢和分析運營資料,及時作出最佳化調整,省時省事還安全。在月度例會上,我因此再一次得到了老闆的肯定,開心的同時,也在心裡暗想:“看來不能鬆懈,還得多學習啊~”
據瞭解,目前已開放EI企業智慧、計算、應用服務、網路、軟體開發平臺、影片等70+雲服務,共上線2000+個API、6000+個錯誤碼。在前期試執行期間,華為雲API Explorer平臺上的API介面也已被多家企業成功接入。
點選檢視詳情:
華為雲API Explorer平臺在未來幾個月會實現更多功能,比如支援SDK示例程式碼、CLI等特性,同時也會開放更多的雲服務API介面,連線更多開發者實現創新、拓寬創新邊界。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4606/viewspace-2796518/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 一個程式設計師的技術進階之路程式設計師
- 如何讓第一個試點Scrum專案成功Scrum
- Android進階 一個專案,一個ToolbarAndroid
- 專案進度管理的三個要點
- 【API進階之路】破圈,用一個API代替10人內容團隊API
- 熬夜整理56個JavaScript高階的手寫知識點!!專業掃盲!JavaScript
- 發現一個開源專案優化點,點進來就是你的了優化
- 【子衿技術】DBA進階之路
- 一言難盡,Jpa這個功能差點讓我丟了工作
- 聊聊一個差點被放棄的專案以及近期的開源計劃
- 從一個實戰專案來看一下React Native開發的幾個關鍵技術點React Native
- 前端進階之路:點選事件繫結前端事件
- 2012 不宜進入的三個技術點
- 新專案,新的起點,每天進步一點點
- Java成長之路--一個非科班生的進階之路Java
- 外包專案管理技術要點(轉)專案管理
- 盤點敏捷專案失敗的6個主要原因敏捷
- 前端工程師的技術進階點在哪裡?前端工程師
- 成功運作一個開源專案的 15 個要點
- NOIP防翻車要點
- 伺服器重點清理6個點伺服器
- eclipse svn怎麼讓其同步整個專案?Eclipse
- 一個好的專案組大概要具有的幾個特點!
- 一個排查了大半天兒的問題,差點又讓 MyBatis 背鍋MyBatis
- 一場成功的技術面試的幾個關鍵點面試
- 6 個技術點帶你理解 Kafka 高效能背後的原理Kafka
- 【JVM進階之路】七:垃圾收集器盤點JVM
- 一點技術思考
- 這48個Java技術點,讓你的面試成功率提升5倍!Java面試
- 專案管理新手?這3點讓你輕鬆把控專案進度專案管理
- 作為面試官的一點點感悟,談談技術人的成長之路面試
- OpenCV進階之路:一個簡化的視訊摘要程式OpenCV
- 一點點技術難點請教各位道友
- 盤點 6 個被淘汰的 Java 技術,它們都曾經風光過!Java
- IBM稱奈米技術讓iPod可裝下整個YouTube網IBM
- ArcGIS API for Silverlight 查詢點聚焦的一個注意點API
- 大眾點評賬號業務高可用進階之路
- C#中的幾個簡單技術點C#