Giter VIP home page Giter VIP logo

openid-connect-java-spring-server's Introduction

MITREid Connect


Maven Central Travis CI Codecov

This project contains a certified OpenID Connect reference implementation in Java on the Spring platform, including a functioning server library, deployable server package, client (RP) library, and general utility libraries. The server can be used as an OpenID Connect Identity Provider as well as a general-purpose OAuth 2.0 Authorization Server.

OpenID Certified

More information about the project can be found:

The authors and key contributors of the project include:

Licensed under the Apache 2.0 license, for details see LICENSE.txt.

openid-connect-java-spring-server's People

Contributors

aanganes avatar adafai01 avatar angelok1 avatar bkeyes-mitre avatar bmulhollem avatar bodewig avatar celkins avatar connz avatar elennick avatar iresprite avatar jamesagnew avatar jmandel avatar jricher avatar jumbojett avatar kangelov avatar leonard84 avatar liouxiao avatar martin-kuba avatar mtderryberry avatar nemonik avatar neths avatar ondrejvelisek avatar praseodym avatar ssayer avatar sschu avatar strangeweaver avatar tj--- avatar trungng92 avatar tsitkov avatar wikkim avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

openid-connect-java-spring-server's Issues

Whitelist & Blacklist

Create mechanisms to support whitelisting of registered clients and blacklisting of domains.

Error Views

Multiple errors (such as InvalidJwtSignature) need to have error view beans mapped to them.

Multiple Point Client

Develop a Connect Client filter that can speak to multiple Connect servers, mitigated through an Account Chooser UI application. The Account Chooser will be developed separately and run on a separate system.

Protocol flow:

User starts at client app, protected by this filter
Filter starts OIDC transaction against configured Account Chooser endpoint (AC)
AC gives user multiple options for login against different connect servers, handles login to these servers
AC redirects user back to client app with Code and some indicator as to which server the user chose
Filter picks up the code and the server indicator and finishes the OIDC transaction

Request Objects

Add support for request objects and request files, both signed and unsigned.

Client Name and Description shouldn't be limited

The client name and description should not be limited to only 3+ alphanumeric characters. These are free-text user-facing values and need to contain arbitrary text. They are also completely optional and may be left blank. Blank values should be pushed in as nulls.

Updating to current SECOAUTH: DefaultOAuth2ProviderTokenService

Concerning: org.mitre.oauth2.service.impl.DefaultOAuth2ProviderTokenService

Must implement new method from OAuth2TokenEntityService --> AuthorizationServerTokenServices interface, getAccessToken(OAuth2Authentication authentication). Added stub so that this will compile.

Fix Unit Tests

Our unit tests are broken since the refactor into client/server/common submodules. They should at least be fixed to allow for a clean compile, and more unit tests need to be added.

Implement UserApprovalHandler

We need to implement our own UserApprovalHandler. This class is injected into the AuthorizationEndpoint and is called on to check whether the user has already approved this request.

Updating to current SECOAUTH: OAuth2RefreshTokenEntity

Concerning org.mitre.oauth2.model.OAuth2RefreshTokenEntity:

Superclass (ExpiringOAuth2RefreshToken) does not have a default (empty) constructor. Constructor takes String value and Date expiration. expiration is marked final in the superclass and cannot be set other than through the constructor.

Added super(null, null) to OAuth2RefreshTokenEntity constructor, and commented out super.setExpiration in setExpiration so that this will compile.

Client Details table is out of date

The "redirect uri" portion of a client's information is now stored in a utility table instead of in the client details table itself. The sql file and any documentation needs to be updated.

Account Chooser UI

Develop an account chooser application to allow redirection to multiple Connect servers

PoCo

Add support for a protected PortableContacts (PoCo) compatible endpoint, fed by the same data as the UserInfo endpoint

Infinite Redirects

If a user tries to access the authorization endpoint to request an authorization code while they are already logged in and have a session, Spring Security goes in to an infinite redirect loop. We probably have a bad setting somewhere in our Spring Security config.

Type Ahead complete for UI

Several UI elements need to have type ahead completion, such as the scope and authority entries on the client registration page.

Access current base URL from ConnectAuthCodeTokenGranter

The "issuer" field of the IdTokens created when passing through the ConnectAuthCodeTokenGranter needs to be set to the server's current base URL. org.mitre.Utility.findBaseUrl() will produce that URL if given an HttpRequest, but the request object is not available inside the token granter. For now, the token granter is using a dummy string value.

Is there a way to properly insert the (dynamically discovered) current base URL into the token granter? Or should this value be statically configured at deployment time?

CheckID Endpoint Support all Bearer Methods

The CheckID Endpoint needs to to support all methods of the Bearer token presentation, including the query parameter, form parameter, and auth header mechanisms. This should be wired in using SECOAUTH filters.

Implement http basic auth for clients

We need to support http basic auth for client authentication at the token endpoint. For now, stick to url query authorization with the client_id and client_secret parameters.

Add options to authorization page

The user needs to be granted more options on the authorization page, including:

  • which scopes/claims to allow
  • whether to remember this authorization in the future

These choices need to be passed through to the granter and expressed in the grant decision.

Refactor TokenGranter code

Justin and I had a conversation with Dave Syer today, and decided it would be worth taking a look at how we could move the custom token generation/enhancement code, which we currently have in our TokenGranter impl, into the token service layer instead.

This will change the TokenService interface, which the SECOAUTH team is OK with re-evaluating. We also talked about the TokenService interface having create, enhance, and finish methods.

I will fork our code and push up a new branch to work on these changes.

Configure OAM

Configure header filter, get list of protected URIs to OAM team

Modify Nexus Config

Modify the nexus project to work with the transition of the project to the mitre-id connect organization.

Signatures (at least, RSA signatures) seem too long

The signatures produced by the RsaSigner are very long - 2-3 times longer than the jwt itself. They make the jwts too big to be stored in our original database tables. We've updated the table definition in accesstoken.sql and on idsandbox to fit them, but they probably should not be that large. Signatures should be smaller than the entity being signed.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.