官术网_书友最值得收藏!

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:

  1. The user selects the provider with whom they wish to sign in to the client app.
  2. 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.
  3. The user signs in from the OAuth2 service provider and accepts the permissions requested by the third-party application.
  4. The user is redirected to the client app with a request code.
  5. In the background, the client app sends the grant code to the provider, who sends back an authentication token.
  6. 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.

主站蜘蛛池模板: 宁陵县| 乐亭县| 大同县| 尉犁县| 星子县| 天气| 涟水县| 涪陵区| 静宁县| 呼伦贝尔市| 晋中市| 玉屏| 如皋市| 田林县| 冕宁县| 乐昌市| 铜梁县| 卢湾区| 巴林左旗| 巢湖市| 厦门市| 龙江县| 临夏市| 柯坪县| 吕梁市| 腾冲县| 漯河市| 绥棱县| 哈巴河县| 洛浦县| 洪湖市| 黔南| 水城县| 盐山县| 富民县| 大连市| 阳春市| 栾城县| 汕头市| 枣阳市| 郯城县|