In
support/cas-server-support-gauth-couchdb/src/main/java/org/apereo/cas/couchdb/gauth/token/GoogleAuthenticatorTokenCouchDbRepository.java
It tries to create the same View twice @ lines 33 & 110 I don't know if
that is why it fails to build that, but
support/cas-server-support-surrogate-authentication-couchdb/src/main/java/org/apereo/cas/couchdb/surrogate/SurrogateAuthorizationCouchDbRepository.java
does not have any duplicates and fails to create as well.
/**
* Find all by uid, otp pair.
*
* @param uid uid to search
* @param otp otp to search
* @return token for uid, otp pair
*/
@View(name = "by_uid_otp", map = "function(doc) { if(doc.token &&
doc.userId) { emit([doc.userId, doc.token], doc) } }")
public List<CouchDbGoogleAuthenticatorToken> findByUidForOtp(final
String uid, final Integer otp) {
val view =
createQuery("by_uid_otp").key(ComplexKey.of(uid.trim().toLowerCase(),
otp));
return db.queryView(view, CouchDbGoogleAuthenticatorToken.class);
}
The attached are what I interpreted the code was actually attempting to do.
So you should be able to load them in CouchDB manually, and try again.
CouchDbGoogleAuthenticatorToken.txt -> Default Database: gauth_multifactor
CouchDbSurrogateAuthorization -> Default Database: surrogates
Also the document format for surrogates is:
{
"_id": "1ff83a3e2c19db3ed3c3300f0401a31e",
"_rev": "3-93412370e24c1980eea9b82a4579b041",
"principal": "userID",
"surrogate": [
"surrogateUserYouWantToBe1",
"surrogateUserYouWantToBe2"
]
}
Thank you,
Matt
On Friday, October 29, 2021 at 12:25:31 PM UTC-4 Matthew Gordon wrote:
> Hello,
>
> I am also seeing this same issue on version 6.4.1 and greater. I did not
> try anything older.
>
> I am also seeing something similar with the CouchDb Surrogate
> Authentication module as well, so maybe there is something up with the
> CouchDb module in general.
>
> _design/CouchDbSurrogateAuthorization/_view/by_surrogate_principal does
> not exist
>
> Thank you,
> Matt
>
> On Thursday, October 28, 2021 at 5:11:30 AM UTC-4 Vittore Zen wrote:
>
>> Hi,
>>
>> I'm trying to set up google 2FA using couchdb. I have added to
>> build.graddle file:
>> implementation
>> "org.apereo.cas:cas-server-support-gauth:${project.'cas.version'}"
>> implementation
>> "org.apereo.cas:cas-server-support-couchdb-ticket-registry:${project.'cas.version'}"
>> implementation
>> "org.apereo.cas:cas-server-support-gauth-couchdb:${project.'cas.version'}"
>>
>> And in etc/cas/config/cas.properties file I have the following lines:
>> cas.ticket.registry.couch-db.db-name=cas
>> cas.ticket.registry.couch-db.password=my_pass
>> cas.ticket.registry.couch-db.url=http://localhost:5984
>> cas.ticket.registry.couch-db.username=admin
>> cas.authn.mfa.gauth.couch-db.db-name=cas
>> cas.authn.mfa.gauth.couch-db.password=my_pass
>> cas.authn.mfa.gauth.couch-db.url=http://localhost:5984
>> cas.authn.mfa.gauth.couch-db.username=admin
>>
>> When run "./gradlew clean copyCasConfiguration build run" in couchdb I
>> saw correctly db cas created, with two
>> document: CouchDbGoogleAuthenticatorAccount and TicketDocument
>>
>> But I get this error:
>> Current WebApplicationContext is not available for processing of
>> GoogleAuthenticatorCouchDbTokenRepository: Make sure this class gets
>> constructed in a Spring web application after the Spring
>> WebApplicationContext has been initialized. Proceeding without injection.
>>
>> Effectively in cas db there isn't a GoogleAuthenticatorCouchDbToken
>> document.
>>
>> Where is my mistake? What did I miss?
>>
>> Thanks in advance.
>>
>> v.
>>
>>
--
- Website: https://apereo.github.io/cas
- Gitter Chatroom: https://gitter.im/apereo/cas
- List Guidelines: https://goo.gl/1VRrw7
- Contributions: https://goo.gl/mh7qDG
---
You received this message because you are subscribed to the Google Groups "CAS
Community" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/a/apereo.org/d/msgid/cas-user/d6fec844-cae9-4b2b-aa5a-c78e87c86121n%40apereo.org.
{
"_id": "_design/CouchDbGoogleAuthenticatorToken",
"views": {
"all": {
"map": "function(doc) { if(doc.token && doc.userId) { emit(doc._id, doc)
} }"
},
"by_uid_otp": {
"map": "function(doc) { if(doc.token && doc.userId) { emit([doc.userId,
doc.token], doc) } }"
},
"by_issued_date_time": {
"map": "function(doc) { if(doc.token && doc.userId) {
emit(doc.issuedDateTime, doc) } }"
},
"by_userId": {
"map": "function(doc) { if(doc.token && doc.userId) { emit(doc.userId,
doc) } }"
},
"count_by_userId": {
"map": "function(doc) { if(doc.token && doc.userId) { emit(doc.userId,
doc) } }",
"reduce": "_count"
},
"count": {
"map": "function(doc) { if(doc.token && doc.userId) { emit(doc._id, doc)
} }",
"reduce": "_count"
},
"by_token": {
"map": "function(doc) { if(doc.token && doc.userId) { emit(doc.token,
doc) } }"
}
},
"lists": {},
"shows": {},
"language": "javascript",
"filters": {},
"updates": {
"delete_token": "function(doc, req){\n if (!doc){\n return [null,
\"No record supplied.\"]\n } else {\n doc['_deleted'] = true\n
return [doc, \"Record Deleted.\"]\n }\n}\n"
}
}
{
"_id": "_design/CouchDbSurrogateAuthorization",
"views": {
"all": {
"map": "function(doc) { if(doc.surrogate && doc.principal) {
emit(doc._id, doc) } }"
},
"by_surrogate": {
"map": "function(doc) { if(doc.surrogate && doc.principal) {
emit(doc.principal, doc.surrogate) } }"
},
"by_surrogate_principal": {
"map": "function(doc) { if(doc.surrogate && doc.principal) {
emit([doc.principal, doc.surrogate], doc) } }"
}
},
"lists": {},
"shows": {},
"language": "javascript",
"filters": {}
}