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的沙龍
37會員
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
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
Thumbnail
還在煩惱平凡日常該如何增添一點小驚喜嗎?全家便利商店這次聯手超萌的馬來貘,推出黑白配色的馬來貘雪糕,不僅外觀吸睛,層次豐富的雙層口味更是讓人一口接一口!本文將帶你探索馬來貘雪糕的多種創意吃法,從簡單的豆漿燕麥碗、藍莓果昔,到大人系的奇亞籽布丁下午茶,讓可愛的馬來貘陪你度過每一餐,增添生活中的小確幸!
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」, 一次性密碼, 顧名思義就是密碼僅能一次性的使用, 在過去我們也都很清楚單純的帳號密碼登入已經不是一個非常安全的選項的, 萬一牽涉到重要的金錢交易時, 如果安全環節沒有兼顧, 將導致個人財產
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News