1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/fnet-oauth2

Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

Основанный на Golang реализации OAuth2-сервиса

Полностью модульный, поддерживает обработку сервера для http/fasthttp, поддержка хранения токенов в redis/mongodb

GoDoc Go Report Card

Установка

$ go get -u gopkg.in/oauth2.v2/...

HTTP-сервер

package main

import (
	"log"
	"net/http"

	"gopkg.in/oauth2.v2/manage"
	"gopkg.in/oauth2.v2/models"
	"gopkg.in/oauth2.v2/server"
	"gopkg.in/oauth2.v2/store/client"
	"gopkg.in/oauth2.v2/store/token"
)

func main() {
	manager := manage.NewRedisManager(
		&token.RedisConfig{Addr: "192.168.33.70:6379"},
	)
	manager.MapClientStorage(client.NewTempStore())
	srv := server.NewServer(server.NewConfig(), manager)

	http.HandleFunc("/authorize", func(w http.ResponseWriter, r *http.Request) {
		authReq, err := srv.GetAuthorizeRequest(r)
		if err != nil {
			http.Error(w, err.Error(), http.StatusBadRequest)
			return
		}
		// TODO: Аутентификация и авторизация
		authReq.UserID = "000000"

		err = srv.HandleAuthorizeRequest(w, authReq)
		if err != nil {
			http.Error(w, err.Error(), http.StatusBadRequest)
		}
	})

	http.HandleFunc("/token", func(w http.ResponseWriter, r *http.Request) {
		err := srv.HandleTokenRequest(w, r)
		if err != nil {
			http.Error(w, err.Error(), http.StatusBadRequest)
		}
	})

	log.Fatal(http.ListenAndServe(":9096", nil))
}

FastHTTP-сервер

srv := server.NewFastServer(server.NewConfig(), manager)

fasthttp.ListenAndServe(":9096", func(ctx *fasthttp.RequestCtx) {
	switch string(ctx.Request.URI().Path()) {
	case "/authorize":
		authReq, err := srv.GetAuthorizeRequest(ctx)
		if err != nil {
			ctx.Error(err.Error(), 400)
			return
		}
		authReq.UserID = "000000"
		// TODO: Аутентификация и авторизация
		err = srv.HandleAuthorizeRequest(ctx, authReq)
		if err != nil {
			ctx.Error(err.Error(), 400)
		}
	case "/token":
		err := srv.HandleTokenRequest(ctx)
		if err != nil {
			ctx.Error(err.Error(), 400)
		}
	}
})
```Тестирование
----
> [goconvey](https://github.com/smartystreets/goconvey)

``` bash
$ goconvey -port=9092

Пример

Пример тестирования авторизации по коду, подробнее здесь

Лицензия

Copyright 2016. Все права защищены.

Разрешено к использованию под лицензией Apache License, Version 2.0 ("Лицензия"); вы не можете использовать этот файл, если не будете соблюдать условия Лицензии. Вы можете получить копию Лицензии по адресу

   http://www.apache.org/licenses/LICENSE-2.0

Если законом не требуется, или не согласовано письменно, то программное обеспечение, распространяемое по Лицензии, распространяется на условиях "КАК ЕСТЬ", БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ ИЛИ УСЛОВИЙ, как явных, так и подразумеваемых. Смотрите Лицензию для конкретного языка, регулирующего права и условия использования по Лицензии.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

OAuth2-сервер, реализованный на Golang, полностью модульный, поддерживает обработку запросов через http/fasthttp и хранение токенов в redis/mongodb. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Язык

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/fnet-oauth2.git
git@api.gitlife.ru:oschina-mirror/fnet-oauth2.git
oschina-mirror
fnet-oauth2
fnet-oauth2
master