Spring OAuth 2 + Spring Data Neo4j multi-tenancy

不问归期 提交于 2019-12-23 17:51:23

问题


I'm going to implement multi-tenancy support in my Spring OAuth 2 + Spring Data Neo4j project.

I have configure my OAuth2 Authorization Server with a few different clients with a different clientId.

Also, I have added a base TenantEntity to my Spring Data Neo4j models:

@NodeEntity
public abstract class TenantEntity extends BaseEntity {

    private String tenantId;

    public String getTenantId() {
        return tenantId;
    }

    public void setTenantId(String tenantId) {
        this.tenantId = tenantId;
    }

}

All of my existing Spring Data Neo4j entities must now extend this TenantEntity.

Right now I'm going to rewrite all of my Neo4j queries in order to support this tenantId parameter.

For example current query:

MATCH (d:Decision)<-[:DEFINED_BY]-(c:Criterion) WHERE id(d) = {decisionId} AND NOT (c)<-[:CONTAINS]-(:CriterionGroup) RETURN c

I going to rewrite to following:

MATCH (d:Decision)<-[:DEFINED_BY]-(c:Criterion) WHERE id(d) = {decisionId} AND d.tenantId = {tenantId} AND c.tenantId = {tenantId} AND NOT (c)<-[:CONTAINS]-(:CriterionGroup) RETURN c

In turn for tenantId I'm going to use OAuth2 clientId and store it together with every Neo4j entity.

Is it a correct approach in order to implement multi-tenancy or Spring OAuth2/Data Neo4j can propose something more standard for this purpose out of the box ?


回答1:


Since Neo4j currently has no feature to support multi-tenancy, if you particularly need this, it must be worked-around as you have done. You solution looks reasonable.

Alternatively, licensing is by machine, so it is possible to use, for example, Docker and spin up multiple Neo4j instances each on a different port.



来源:https://stackoverflow.com/questions/40213727/spring-oauth-2-spring-data-neo4j-multi-tenancy

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!