Golang - Gin #17: 使用 Gin 實現 OAuth 驗證和授權

更新於 發佈於 閱讀時間約 3 分鐘
來源: Gin Logo + 自行用 Canva 製作

來源: Gin Logo + 自行用 Canva 製作

🛡️ 使用Gin實現OAuth驗證和授權

你好,開發者們!如今,OAuth 已經成為 Web 和移動應用中身份驗證和授權的黃金標準。這種協議允許用戶向第三方應用提供有限的訪問權限,而無需共享密碼。在這篇文章中,我們將探索如何在 Gin 框架中實現 OAuth 驗證和授權。

OAuth 提供了一個安全的方法,使得用戶可以授予應用訪問其資料的權限,而不需要直接提供他們的密碼。這意味著第三方應用無法訪問用戶的所有資料,只能訪問用戶允許的那部分資料。


🚀 實現OAuth驗證

  1. 設置OAuth提供者: 你需要首先在OAuth提供者(如Google、Facebook等)處設置你的應用,獲得client_idclient_secret
  2. 使用 Gin 和 go-oauth2 套件: 這個套件為 OAuth2.0 協議提供了完整的支援。
    import (
    "github.com/gin-gonic/gin"
    "golang.org/x/oauth2"
    "golang.org/x/oauth2/google"
    )

    var conf = &oauth2.Config{
    ClientID: "YOUR_CLIENT_ID",
    ClientSecret: "YOUR_CLIENT_SECRET",
    RedirectURL: "http://localhost:8080/auth/callback",
    Scopes: []string{"profile", "email"},
    Endpoint: google.Endpoint,
    }

    r.GET("/auth", func(c *gin.Context) {
    url := conf.AuthCodeURL("state", oauth2.AccessTypeOffline)
    c.Redirect(http.StatusFound, url)
    })

    r.GET("/auth/callback", func(c *gin.Context) {
    // 處理回調並獲得用戶資訊...
    })
  3. 處理OAuth回調: 當用戶授權之後,他們會被重定向回你的應用,帶有一個授權碼。你可以使用這個授權碼來獲得訪問令牌。
    r.GET("/auth/callback", func(c *gin.Context) {
    code := c.DefaultQuery("code", "")
    token, err := conf.Exchange(oauth2.NoContext, code)
    if err != nil {
    // 處理錯誤
    return
    }

    // 使用token獲取用戶資訊...
    })


🔐 授權

一旦你有了訪問令牌,你就可以使用它來訪問用戶的資料。要確保只訪問用戶授予你權限的資料。


🌟 結論

OAuth 提供了一個安全和高效的方式來實現身份驗證和授權。通過在你的Gin應用中實現 OAuth,你可以提供一個更安全、更易於使用的用戶體驗。希望這篇文章能幫助你輕鬆實現這一功能!




感謝

謝謝大家看完這篇,如果您喜歡我的文章,歡迎 小額贊助我 ^^
留言
avatar-img
留言分享你的想法!
avatar-img
KH Huang的沙龍
36會員
194內容數
歡迎來到【代碼的詩情】:探索程式語言之美 系列,這是一場優雅的程式之旅,透過詩歌的抒發,尋找不同程式語言的美感和精髓。 在這個系列中,我們將透過文字的韻律,深入探索多種程式語言的核心概念和語法,以及它們獨特的應用和技巧。每一篇詩歌都是一個故事,每一段代碼都是一句詩句,讓代碼的旋律和詩情在其中相互交織。
KH Huang的沙龍的其他內容
2023/12/14
🚀 在Gin中整合GraphQL和MongoDB:靈活的數據查詢 隨著Web應用的複雜度增加,開發者尋找更靈活和高效的方式來查詢和操作數據。GraphQL作為一種查詢語言,允許用戶精確地指定他們想要的數據,而MongoDB作為一個靈活的NoSQL數據庫,可以很好地支持這種查詢。結合這兩者,我
Thumbnail
2023/12/14
🚀 在Gin中整合GraphQL和MongoDB:靈活的數據查詢 隨著Web應用的複雜度增加,開發者尋找更靈活和高效的方式來查詢和操作數據。GraphQL作為一種查詢語言,允許用戶精確地指定他們想要的數據,而MongoDB作為一個靈活的NoSQL數據庫,可以很好地支持這種查詢。結合這兩者,我
Thumbnail
2023/10/17
隨著微服務和分佈式系統的普及,了解應用的運行情況和性能瓶頸已成為開發者的重要挑戰。分佈式跟蹤為我們提供了跨多個服務的請求路徑的完整視圖,幫助我們定位問題和優化性能。
Thumbnail
2023/10/17
隨著微服務和分佈式系統的普及,了解應用的運行情況和性能瓶頸已成為開發者的重要挑戰。分佈式跟蹤為我們提供了跨多個服務的請求路徑的完整視圖,幫助我們定位問題和優化性能。
Thumbnail
2023/10/14
Serverless,也被稱為無伺服器架構,是一種現代雲計算模型,允許開發者專注於代碼,而不必擔心基礎架構和伺服器的管理。它通常與Function as a Service (FaaS)相關聯。
Thumbnail
2023/10/14
Serverless,也被稱為無伺服器架構,是一種現代雲計算模型,允許開發者專注於代碼,而不必擔心基礎架構和伺服器的管理。它通常與Function as a Service (FaaS)相關聯。
Thumbnail
看更多
你可能也想看
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
家中修繕或裝潢想要找各種小零件時,直接上網採買可以省去不少煩惱~看看Sylvia這回為了工地買了些什麼吧~
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
👜簡單生活,從整理包包開始!我的三款愛用包+隨身小物清單開箱,一起來看看我每天都帶些什麼吧🌿✨
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
創作者營運專員/經理(Operations Specialist/Manager)將負責對平台成長及收入至關重要的 Partnership 夥伴創作者開發及營運。你將發揮對知識與內容變現、影響力變現的精準判斷力,找到你心中的潛力新星或有聲量的中大型創作者加入 vocus。
Thumbnail
兩年前,我想用 Bitfinex API 看看我的放貸錢包有多少錢,但因為不太懂寫程式,就沒弄成。最近,我試著讓 ChatGPT 幫忙,沒想到它不僅知道我要什麼,還真的幫我寫出了程式碼。
Thumbnail
兩年前,我想用 Bitfinex API 看看我的放貸錢包有多少錢,但因為不太懂寫程式,就沒弄成。最近,我試著讓 ChatGPT 幫忙,沒想到它不僅知道我要什麼,還真的幫我寫出了程式碼。
Thumbnail
角色基於的訪問控制(RBAC)是管理用戶訪問資源的一種策略,根據不同的角色賦予用戶不同的權限。在本篇文章中,我們將探討如何使用Gin和JSON Web Tokens (JWT)來實現RBAC。
Thumbnail
角色基於的訪問控制(RBAC)是管理用戶訪問資源的一種策略,根據不同的角色賦予用戶不同的權限。在本篇文章中,我們將探討如何使用Gin和JSON Web Tokens (JWT)來實現RBAC。
Thumbnail
你好,開發者們!如今,OAuth 已經成為 Web 和移動應用中身份驗證和授權的黃金標準。這種協議允許用戶向第三方應用提供有限的訪問權限,而無需共享密碼。在這篇文章中,我們將探索如何在 Gin 框架中實現 OAuth 驗證和授權。
Thumbnail
你好,開發者們!如今,OAuth 已經成為 Web 和移動應用中身份驗證和授權的黃金標準。這種協議允許用戶向第三方應用提供有限的訪問權限,而無需共享密碼。在這篇文章中,我們將探索如何在 Gin 框架中實現 OAuth 驗證和授權。
Thumbnail
哈囉!在今天的文章中,我們將深入探討如何在 Gin 應用中實現 JWT 驗證。這種技術允許我們安全地驗證和授權用戶,並確保我們的 API 或 Web 應用的資源僅被許可的用戶訪問。
Thumbnail
哈囉!在今天的文章中,我們將深入探討如何在 Gin 應用中實現 JWT 驗證。這種技術允許我們安全地驗證和授權用戶,並確保我們的 API 或 Web 應用的資源僅被許可的用戶訪問。
Thumbnail
透過Google Authenticator轉移帳戶的功能,可以一次性提取所有TOTP密鑰,加快整合TOTP到Bitwarden的過程。整合完成後,不論是輸入帳號密碼或是輸入TOTP認證碼,都只需要Bitwarden即可搞定,在安全性和方便性取得平衡。在方便性和安全性之間取得平衡,是資安永遠的課題。
Thumbnail
透過Google Authenticator轉移帳戶的功能,可以一次性提取所有TOTP密鑰,加快整合TOTP到Bitwarden的過程。整合完成後,不論是輸入帳號密碼或是輸入TOTP認證碼,都只需要Bitwarden即可搞定,在安全性和方便性取得平衡。在方便性和安全性之間取得平衡,是資安永遠的課題。
Thumbnail
在進行開發工作時,可能會使用不同的 Git 帳號做登入和推送的情形,例如: 公司的 Git 帳號和個人的帳號,這樣做的好處是為了確保開發工作能清楚劃分,所以需要做切換帳號的動作,特別是在不同的專案間切換 commit 的對象,因此有了這篇文紀錄這個過程。
Thumbnail
在進行開發工作時,可能會使用不同的 Git 帳號做登入和推送的情形,例如: 公司的 Git 帳號和個人的帳號,這樣做的好處是為了確保開發工作能清楚劃分,所以需要做切換帳號的動作,特別是在不同的專案間切換 commit 的對象,因此有了這篇文紀錄這個過程。
Thumbnail
使用網銀時我們常常會聽到OTP、OTP, 究竟OTP是什麼呢? 全名為「One Time Password」, 一次性密碼, 顧名思義就是密碼僅能一次性的使用, 在過去我們也都很清楚單純的帳號密碼登入已經不是一個非常安全的選項的, 萬一牽涉到重要的金錢交易時, 如果安全環節沒有兼顧, 將導致個人財產
Thumbnail
使用網銀時我們常常會聽到OTP、OTP, 究竟OTP是什麼呢? 全名為「One Time Password」, 一次性密碼, 顧名思義就是密碼僅能一次性的使用, 在過去我們也都很清楚單純的帳號密碼登入已經不是一個非常安全的選項的, 萬一牽涉到重要的金錢交易時, 如果安全環節沒有兼顧, 將導致個人財產
Thumbnail
在前幾篇的文章中。有和各位分享了使用Ganache來模擬一個以太坊主網進行交易,也嘗試使用了web3.py來開發區塊鏈互動程式。相信對您而言,一定有更深入探索區塊鏈交易的需求。本篇想和各位介紹一個Ganache的神奇功能:解鎖任意帳號
Thumbnail
在前幾篇的文章中。有和各位分享了使用Ganache來模擬一個以太坊主網進行交易,也嘗試使用了web3.py來開發區塊鏈互動程式。相信對您而言,一定有更深入探索區塊鏈交易的需求。本篇想和各位介紹一個Ganache的神奇功能:解鎖任意帳號
Thumbnail
使用加密貨幣交易會比您想像中的容易 本篇將介紹: (1) 如何用Pi Wallet(錢包)來進行點對點的交易支付 (2) 使用blockchain.pi查詢交易紀錄 (3) 以PitoGo為例子來示範應用的支付 Note:名詞解釋 也歡迎加入Line社群,大家一起討論Pi Network!
Thumbnail
使用加密貨幣交易會比您想像中的容易 本篇將介紹: (1) 如何用Pi Wallet(錢包)來進行點對點的交易支付 (2) 使用blockchain.pi查詢交易紀錄 (3) 以PitoGo為例子來示範應用的支付 Note:名詞解釋 也歡迎加入Line社群,大家一起討論Pi Network!
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News