- Go Programming Blueprints(Second Edition)
- Mat Ryer
- 400字
- 2021-07-08 10:40:02
Getting started with OAuth2
OAuth2 is an open authorization standard designed to allow resource owners to give clients delegated access to private data (such as wall posts or tweets) via an access token exchange handshake. Even if you do not wish to access the private data, OAuth2 is a great option that allows people to sign in using their existing credentials, without exposing those credentials to a third-party site. In this case, we are the third party, and we want to allow our users to sign in using services that support OAuth2.
From a user's point of view, the OAuth2 flow is as follows:
- The user selects the provider with whom they wish to sign in to the client app.
- The user is redirected to the provider's website (with a URL that includes the client app ID) where they are asked to give permission to the client app.
- The user signs in from the OAuth2 service provider and accepts the permissions requested by the third-party application.
- The user is redirected to the client app with a request code.
- In the background, the client app sends the grant code to the provider, who sends back an authentication token.
- The client app uses the access token to make authorized requests to the provider, such as to get user information or wall posts.
To avoid reinventing the wheel, we will look at a few open source projects that have already solved this problem for us.
Open source OAuth2 packages
Andrew Gerrand has been working on the core Go team since February 2010, that is, two years before Go 1.0 was officially released. His goauth2
package (see https://github.com/golang/oauth2) is an elegant implementation of the OAuth2 protocol written entirely in Go.
Andrew's project inspired gomniauth
(see https://github.com/stretchr/gomniauth). An open source Go alternative to Ruby's omniauth
project, gomniauth
provides a unified solution to access different OAuth2 services. In the future, when OAuth3 (or whatever the next-generation authorization protocol will be) comes out, in theory gomniauth
could take on the pain of implementing the details, leaving the user code untouched.
For our application, we will use gomniauth
to access OAuth services provided by Google, Facebook, and GitHub, so make sure you have it installed by running the following command:
go get github.com/stretchr/gomniauth
Tip
Some of the project dependencies of gomniauth
are kept in Bazaar repositories, so you'll need to head over to http://wiki.bazaar.canonical.com to download them.
- JavaScript 從入門到項目實踐(超值版)
- SoapUI Cookbook
- LabVIEW程序設計基礎與應用
- 數據結構(C語言)
- C語言程序設計學習指導與習題解答
- Python數據結構與算法(視頻教學版)
- Julia高性能科學計算(第2版)
- OpenGL Data Visualization Cookbook
- Programming with CodeIgniterMVC
- 軟件測試教程
- 零基礎學HTML+CSS
- Practical Predictive Analytics
- HTML5移動前端開發基礎與實戰(微課版)
- Python應用與實戰
- Microsoft XNA 4.0 Game Development Cookbook