Keep up to date with release notes on the Edgecastle blog.

IdentityServer3 + Neo4J = Awesome

Combining the powerful, feature-rich IdentityServer3 from Dominick Baier and Brock Allen (plus community contributors) and the leading Graph database means your users become a native part of your application graph. IdentityServer3 ensures security to modern standards and flexibility while Neo4J means your data closely reflects your domain, and its rich relational capabilities allow you to derive incredible intelligence from your data.


When building applications backed by a Graph database it became obvious that we needed some representation of the user in the graph for various reasons. Rather than duplicate the data in a separate identity/membership system we decided to combine the two.


We've tried to make it as easy as possible to bring Neo4j into your IdentityServer3 implementation, or vice-versa, bring identity data into your Neo4j graph.

First, set up IdentityServer3 in your project. Brock Allen and Dominick Baier have done a great job with the documentation.

Next add the IdentityServer3.Neo4j nuget package to your project:

Install-Package Edgecastle.IdentityServer3.Neo4j

Then update the app.useIdentityServer() method to use the Neo4j factory instead of the default, in-memory one:

app.Map("/identity", idsrvApp =>
    idsrvApp.UseIdentityServer(new IdentityServerOptions
        SiteName = "Your site",
        SigningCertificate = LoadCertificate(),
    	// Reference the Neo4j version of the services factory
        Factory = Neo4jServiceFactory.Create()

You'll also need to add an AppSetting in the project's config file to tell the Neo4jServiceFactory where your Neo4j server is:

<add key="Neo4jConnectionString" value="http://neo4j:neo4j@localhost:7474/db/data" />

It's as simple as that.

Got any samples?

Sure, once you have IdentityServer3 backed by Neo4j the first question we asked ourselves was 'how do I get users into the system?'. The source code on Github includes an OWIN ASP.NET MVC application which includes examples how to drive the Graph services for users, clients, claims and scopes to persist identity and authorization data.

Is there a roadmap? How actively developed will this be?

Here at Edgecastle we're betting big on Graph technologies, with Neo4j being a particular favourite. IdentityServer3.Neo4j is a cut of our internal code (properly santized of course) ready for public consumption. We are actively incubating and developing commercial products built on top of IdentityServer3.Neo4j and will continue to release cuts of our internal code as we introduce new features that we feel will provide value to the community.

With the library's evolution being linked to various undisclosed products' development we are unable to publish a roadmap, however, we will consider all pull requests based on their individual merits and (where possible) without prejudice from the internal roadmap.