2016-09-19 4 views
-1

У меня есть 2 приложения:Symfony 2 RESTful API OAuth2

1 APP - основной приложение (CMR) 2 APP - сайт

Основной целью является подключение к 2 АРР с 1 APP с использованием oauth2;

1 APP реализован FOSOAuthServerBundle, но не существует ни одного клиента oauth2.

Проблема в том, что я не могу генерировать клиентов oauth2, поскольку пользователи знают только учетные данные пользователя и пароля.

На первом этапе пользователи отправляют формы входа - тогда мне нужно, чтобы пользовательские учетные данные генерировали токены.

Могу ли я безопасно генерировать клиентов oauth2 с одинаковым идентификатором & как пользовательское имя пользователя/пароль?

ответ

1

Пользователям не нужно знать client_id и client_secret. На самом деле это небезопасно для них, чтобы их знали кто-либо еще, кроме APP 2. Учетные данные клиента (client_id, client_secret) генерируются на сервере auth. Затем разработчики APP 2 получают эти учетные данные и хранят их где-то там, где доступ к ним имеет только APP 2 (например, файлы конфигурации приложения 2 или приложение 2 дБ). После этого, когда пользователь хочет войти в систему, он предоставляет только имя пользователя и пароль, приложение 2 завершает их в API-вызове API-интерфейсов аутентификатора сервера auth с типом типа гранта «пароль» и требуемыми областями.

Но это только царапины поверхности auth2. Если вы добавите третье приложение в свою сеть и хотите, чтобы A2 и A3 надежно связывались с использованием токена, сгенерированного A1, вам понадобится API-интерфейс для интроспекции в A1 или даже с использованием подписанного JWT openId.

Короче говоря, FOSOAuthServerBundle - хорошее начало, но в конечном итоге вам нужно будет много работать. Вот несколько материалов, которые помогут вам.

auth2 гк: https://tools.ietf.org/html/rfc6749

Токен Introspect гк: https://tools.ietf.org/search/rfc7662

знак JWT: https://jwt.io

Также смотрите в OpenId, RBAC, ACL. Это также пригодится в какой-то момент.