Я устанавливаю Couchbase Lite на Android с Sync Gateway 2.1 и Couchbase Server 6.0.
Я реализовал аутентификацию с помощью Google Sign-in, используя неявный поток OpenID Connect, и я могу получить сессионный cookie для аутентификации.
Теперь мне нужна авторизация для использования функции requireUser () в javascript файла конфигурации SGW, но Я не могу заставить SGW создать пользователя для меня .
Из того, что я прочитал в документации, установка "register":true
в файле конфигурации должна заставить SGW автоматически создавать пользователя, когда он не существует, но я продолжаю получать ответ Unauthorized
при отправке запроса на /_session
с телом { "name": "new_user_name" }
.
Чего мне не хватает, чтобы иметь возможность автоматически создавать пользователя с SGW? Я установил аутентификацию Implicit Flow, чтобы избежать необходимости управлять собственным веб-приложением для авторизации, поэтому я хотел бы избежать использования API rest Admin для создания пользователя.
Вот мой конфигурационный файл SGW:
{
"log": ["*"],
"adminInterface": ":4985",
"databases": {
"lucidity": {
"server": "http://xxx.xxx.xxx.xxx:8091",
"bucket": "bucketname",
"username": "syncgateway",
"password": "***********",
"num_index_replicas": 0,
"enable_shared_bucket_access": true,
"import_docs": "continuous",
"oidc": {
"providers": {
"GoogleAuthFlow": {
"issuer":"https://accounts.google.com",
"client_id":"xxxxxxxxxxxxx.apps.googleusercontent.com ",
"validation_key":" xxxxxxxxxxxx",
"callback_url": "http://xxx.xxx.xxx.xxx:4984/bucketname/_oidc_callback",
"register":true
}
}
},
"users": { "GUEST": { "disabled": false, "admin_channels": ["*"] } },
"sync": `function (doc, oldDoc) {
}`
}
}
EDIT :
Вот журнал для моего запроса:
POST http://xx.xx.xx.xx:4984/bucketname/_session
Content-Type: application/json
Content-Length: 2
Authorization: [MY_ID_TOKEN_HERE]
Body: { }
А ответ
{
"authentication_handlers" : [ "default", "cookie" ],
"ok" : true,
"userCtx" : {
"channels" : {
"!" : 1,
"*" : 1
},
"name" : null
}
}
со следующим заголовком Set-Cookie:
Set-Cookie: SyncGatewaySession=xxxx; Path=/bucketname; Expires=Fri, 18 Jan 2019 08:50:36 GMT