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

OSCHINA-MIRROR/lyric-oauth2

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

Сервер OAuth 2.0 на Go

Открытый протокол для обеспечения безопасной авторизации простым и стандартным способом в веб-, мобильных и десктопных приложениях.

Строительство Codecov Отчетная карта Документация GoDoc Лицензия

Поток протокола

     +--------+                               +---------------+
     |        |--(A)- запрос на авторизацию ->|   владелец    |
     |        |                               |ресурса        |
     |        |<-(B)-- грант на авторизацию ---|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(C)-- грант на авторизацию -->| сервер        |
     |        |                               |авторизации    |
     |        |<-(D)----- токен доступа -------|               |
     |        |                               +---------------+
     |        |
     |        |                               +---------------+
     |        |--(E)----- токен доступа ------>| сервер        |
     |        |                               |ресурса        |
     |        |<-(F)--- защищённый ресурс ---|               |
     +--------+                               +---------------+

Быстрое начало

Скачивание и установка

go get -u -v github.com/go-oauth2/oauth2/v4/...

Создайте файл server.go

package main

import (
	"log"
	"net/http"

	"github.com/go-oauth2/oauth2/v4/errors"
	"github.com/go-oauth2/oauth2/v4/manage"
	"github.com/go-oauth2/oauth2/v4/models"
	"github.com/go-oauth2/oauth2/v4/server"
	"github.com/go-oauth2/oauth2/v4/store"
)

func main() {
	manager := manage.NewDefaultManager()
	// память для хранения токена
	manager.MustTokenStorage(store.NewMemoryTokenStore())
```	// память для хранения клиента
	clientStore := store.NewClientStore()
	clientStore.Set("000000", &models.Client{
		ID:     "000000",
		Secret: "999999",
		Domain: "http://localhost",
	})
	manager.MapClientStorage(clientStore)

	srv := server.NewDefaultServer(manager)
	srv.SetAllowGetAccessRequest(true)
	srv.SetClientInfoHandler(server.ClientFormHandler)```md
# Установка и запуск

```bash
go build server.go

./server

Откройте в вашем веб-браузере

http://localhost:9096/token?grant_type=client_credentials&client_id=000000&client_secret=999999&scope=read

{
  "access_token": "J86XVRYSNFCFI233KXDL0Q",
  "expires_in": 7200,
  "scope": "read",
  "token_type": "Bearer"
}

Возможности

  • Простота использования
  • Основана на реализации RFC 6749
  • Поддержка хранения токенов с временем жизни (TTL)
  • Поддержка пользовательского времени истечения доступного токена
  • Поддержка пользовательских расширений
  • Поддержка пользовательских областей видимости
  • Поддержка JWT для генерации токенов доступа

Пример

Полный пример имитации модели авторизации кодом

Примеры имитации модели авторизации кодом, пожалуйста, проверьте пример

Использование JWT для генерации токенов доступа


import (
    "github.com/go-oauth2/oauth2/v4/generates"
    "github.com/dgrijalva/jwt-go"
)

// ...
manager.MapAccessGenerate(generates.NewJWTAccessGenerate("", []byte("00000000"), jwt.SigningMethodHS512))

// Парсинг и проверка JWT токена доступа
token, err := jwt.ParseWithClaims(access, &generates.JWTAccessClaims{}, func(t *jwt.Token) (interface{}, error) {
    if _, ok := t.Method.(*jwt.SigningMethodHMAC); !ok {
        return nil, fmt.Errorf("parse error")
    }
    return []byte("00000000"), nil
})
if err != nil {
    // panic(err)
}claims, ok := token.Claims.(*generates.JWTAccessClaims)
if !ok || !token.Valid {
    // panic("invalid token")
}

## Реализация хранилищ
```- [BuntDB](https://github.com/tidwall/buntdb)(используется по умолчанию как хранилище данных)
- [Redis](https://github.com/go-oauth2/redis)
- [MongoDB](https://github.com/go-oauth2/mongo)
- [MySQL](https://github.com/go-oauth2/mysql)
- [MySQL (Предоставляет как клиентское, так и токенное хранилище)](https://github.com/imrenagi/go-oauth2-mysql)
- [PostgreSQL](https://github.com/vgarvardt/go-oauth2-pg)
- [DynamoDB](https://github.com/contamobi/go-oauth2-dynamodb)
- [XORM](https://github.com/techknowlogick/go-oauth2-xorm)
- [XORM (MySQL, клиентское и токенное хранилище)](https://github.com/rainlay/go-oauth2-xorm)
- [GORM](https://github.com/techknowlogick/go-oauth2-gorm)
- [Firestore](https://github.com/tslamic/go-oauth2-firestore)

Полезные утилиты

Лицензия MIT

Авторское право © 2016 Lyric

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

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

Введение

Описание недоступно Развернуть Свернуть
MIT
Отмена

Обновления

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

Участники

все

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

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