MCPcopy Index your code
hub / github.com/caelcs/spring-security-mongo

github.com/caelcs/spring-security-mongo @RELEASE-3.0.2

Chat with this repo
repository ↗ · DeepWiki ↗ · release RELEASE-3.0.2 ↗ · + Follow
403 symbols 1,256 edges 64 files 0 documented · 0%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

Spring Security Mongo

Build Status Codacy Badge Codacy Badge Maven Central

Library to provide full implementation of all the repositories and provider necessary to have all the security persisted in MongoDB.

  • ApprovalStore
  • ClientDetailsService
  • ClientRegistrationService
  • TokenStore
  • UserDetailsManager
  • ClientTokenServices

How to use it

Step 1

Add as dependency to your project and then use the beans in your Spring Oauth2 Configuration

Note:

Spring Boot 2.x and Oath2 library and Mongo Driver 3.6 has bring a lot of changes that are not backward compatible unless that you play around with dependencies. So I have updated all the dependencies to use the latest from version 3.0.0.

Spring Boot 1.5.x -> use 2.0.0 Spring Boot 2.x.x -> use 3.0.0

Step 2

Add this annotation to your configuration class:

@Configuration
@EnableSecurityMongo
public class MongoSecurityConfiguration {

}

Having this annotation will define in your spring context all the necessary to use this library.

Step 3

define the following properties in your app if you want to use the default Mongo client. If you want to use your own version just DO NOT ADD these properties.

mongo.host=localhost
mongo.port=27017
mongo.database=testdb
mongo.username=testuser
mongo.password=testpassword

Creating users manually in Mongo DB

You can produce the json to create in your mongo instance the users by executing some of the integration tests or just insert this json:

Mongo User

{
    "_id" : "testuser",
    "_class" : "uk.co.caeldev.springsecuritymongo.domain.User",
    "password" : "testpassword",
    "userUUID" : LUUID("03479d48-93cf-5e55-974f-842eb0200ca8"),
    "authorities" : [ 
        {
            "role" : "ROLE_USER",
            "_class" : "org.springframework.security.core.authority.SimpleGrantedAuthority"
        }
    ],
    "accountNonExpired" : true,
    "accountNonLocked" : true,
    "credentialsNonExpired" : true,
    "enabled" : true
}

Mongo Client Detail

{
    "_id" : "testclient",
    "_class" : "uk.co.caeldev.springsecuritymongo.domain.MongoClientDetails",
    "clientSecret" : "testclientsecret",
    "scope" : [ 
        "read"
    ],
    "resourceIds" : [ 
        "oauth2-resource"
    ],
    "authorizedGrantTypes" : [ 
        "authorization_code", 
        "implicit"
    ],
    "registeredRedirectUris" : [ 
        "http://www.google.co.uk"
    ],
    "authorities" : [ 
        {
            "role" : "ROLE_CLIENT",
            "_class" : "org.springframework.security.core.authority.SimpleGrantedAuthority"
        }
    ],
    "accessTokenValiditySeconds" : 30000.0000000000000000,
    "refreshTokenValiditySeconds" : 30000.0000000000000000,
    "additionalInformation" : {},
    "autoApproveScopes" : [ 
        ""
    ]
}

Extension points exported contracts — how you extend this code

MongoOAuth2RefreshTokenRepositoryBase (Interface)
(no doc) [3 implementers]
src/main/java/uk/co/caeldev/springsecuritymongo/repositories/MongoOAuth2RefreshTokenRepositoryBase.java
UserRepositoryBase (Interface)
(no doc) [3 implementers]
src/main/java/uk/co/caeldev/springsecuritymongo/repositories/UserRepositoryBase.java
MongoApprovalRepositoryBase (Interface)
(no doc) [2 implementers]
src/main/java/uk/co/caeldev/springsecuritymongo/repositories/MongoApprovalRepositoryBase.java
MongoOAuth2ClientTokenRepositoryBase (Interface)
(no doc) [2 implementers]
src/main/java/uk/co/caeldev/springsecuritymongo/repositories/MongoOAuth2ClientTokenRepositoryBase.java
MongoClientDetailsRepositoryBase (Interface)
(no doc) [2 implementers]
src/main/java/uk/co/caeldev/springsecuritymongo/repositories/MongoClientDetailsRepositoryBase.java

Core symbols most depended-on inside this repo

findByTokenId
called by 16
src/main/java/uk/co/caeldev/springsecuritymongo/repositories/MongoOAuth2AccessTokenRepositoryBase.java
extractTokenKey
called by 10
src/main/java/uk/co/caeldev/springsecuritymongo/MongoTokenStore.java
deleteByTokenId
called by 10
src/main/java/uk/co/caeldev/springsecuritymongo/repositories/MongoOAuth2AccessTokenRepositoryBase.java
getClientId
called by 9
src/main/java/uk/co/caeldev/springsecuritymongo/domain/MongoApproval.java
update
called by 9
src/main/java/uk/co/caeldev/springsecuritymongo/repositories/MongoClientDetailsRepositoryBase.java
findByAuthenticationId
called by 8
src/main/java/uk/co/caeldev/springsecuritymongo/repositories/MongoOAuth2ClientTokenRepositoryBase.java
findByUsername
called by 8
src/main/java/uk/co/caeldev/springsecuritymongo/repositories/UserRepository.java
getScope
called by 7
src/main/java/uk/co/caeldev/springsecuritymongo/domain/MongoApproval.java

Shape

Method 337
Class 54
Interface 12

Languages

Java100%

Modules by API surface

src/main/java/uk/co/caeldev/springsecuritymongo/MongoTokenStore.java22 symbols
src/main/java/uk/co/caeldev/springsecuritymongo/domain/MongoClientDetails.java20 symbols
src/test/java/uk/co/caeldev/springsecuritymongo/MongoTokenStoreTest.java17 symbols
src/test/java/uk/co/caeldev/springsecuritymongo/MongoUserDetailsManagerTest.java15 symbols
src/main/java/uk/co/caeldev/springsecuritymongo/domain/User.java14 symbols
src/main/java/uk/co/caeldev/springsecuritymongo/domain/MongoOAuth2AccessToken.java12 symbols
src/main/java/uk/co/caeldev/springsecuritymongo/domain/MongoApproval.java12 symbols
src/main/java/uk/co/caeldev/springsecuritymongo/MongoUserDetailsManager.java12 symbols
src/main/java/uk/co/caeldev/springsecuritymongo/domain/MongoOAuth2ClientToken.java11 symbols
src/main/java/uk/co/caeldev/springsecuritymongo/config/MongoSettings.java11 symbols
src/main/java/uk/co/caeldev/springsecuritymongo/config/MongoConfiguration.java11 symbols
src/test/java/uk/co/caeldev/springsecuritymongo/commons/SecurityRDG.java10 symbols

For agents

$ claude mcp add spring-security-mongo \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact