Convert Figma logo to code with AI

apereo logocas

Apereo CAS - Identity & Single Sign On for all earthlings and beyond.

10,852
3,909
10,852
0

Top Related Projects

Spring Security

22,126

Open Source Identity and Access Management For Modern Applications and Services

2,410

Security engine for Java (authentication, authorization, multi frameworks): OAuth, CAS, SAML, OpenID Connect, LDAP, JWT...

Quick Overview

Apereo CAS (Central Authentication Service) is an enterprise single sign-on solution for web applications. It provides a secure and centralized authentication mechanism, allowing users to access multiple services with a single set of credentials. CAS supports various authentication protocols and integrates with numerous identity providers.

Pros

  • Robust and scalable authentication solution for enterprise environments
  • Supports multiple authentication protocols (SAML, OAuth, OpenID Connect)
  • Highly customizable and extensible architecture
  • Active community and regular updates

Cons

  • Steep learning curve for newcomers
  • Complex configuration and setup process
  • Requires significant resources for deployment and maintenance
  • Documentation can be overwhelming due to the extensive feature set

Code Examples

  1. Basic configuration in application.properties:
cas.server.name=https://cas.example.org:8443
cas.server.prefix=${cas.server.name}/cas
logging.config=file:/etc/cas/config/log4j2.xml

This example sets up the basic CAS server configuration.

  1. Enabling LDAP authentication:
cas.authn.ldap[0].type=AUTHENTICATED
cas.authn.ldap[0].ldapUrl=ldaps://ldap.example.org
cas.authn.ldap[0].baseDn=dc=example,dc=org
cas.authn.ldap[0].searchFilter=sAMAccountName={user}
cas.authn.ldap[0].bindDn=cn=Directory Manager
cas.authn.ldap[0].bindCredential=password

This configuration enables LDAP authentication for CAS.

  1. Configuring a service registry:
{
  "@class" : "org.apereo.cas.services.RegexRegisteredService",
  "serviceId" : "https://app.example.org",
  "name" : "Example App",
  "id" : 1,
  "evaluationOrder" : 1
}

This JSON snippet defines a registered service in CAS.

Getting Started

  1. Download the CAS Overlay template:

    git clone https://github.com/apereo/cas-overlay-template.git
    
  2. Navigate to the project directory:

    cd cas-overlay-template
    
  3. Build the project:

    ./gradlew clean build
    
  4. Run CAS:

    java -jar build/libs/cas.war
    
  5. Access CAS at https://localhost:8443/cas

Note: This is a basic setup. For production use, additional configuration and security measures are required.

Competitor Comparisons

Spring Security

Pros of Spring Security

  • More comprehensive security framework, covering a wider range of application security needs
  • Seamless integration with Spring ecosystem and other Spring projects
  • Larger community and more frequent updates

Cons of Spring Security

  • Steeper learning curve due to its extensive feature set
  • Can be overkill for simpler authentication requirements
  • Configuration can be complex for advanced scenarios

Code Comparison

Spring Security configuration example:

@Configuration
@EnableWebSecurity
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Override
    protected void configure(HttpSecurity http) throws Exception {
        http.authorizeRequests()
            .antMatchers("/public/**").permitAll()
            .anyRequest().authenticated()
            .and().formLogin();
    }
}

CAS configuration example:

cas.server.name=https://cas.example.org:8443
cas.server.prefix=${cas.server.name}/cas
logging.config=file:/etc/cas/config/log4j2.xml

Spring Security offers more granular control over security configurations within the application code, while CAS typically relies on external configuration files for its setup. Spring Security's approach allows for more flexibility in defining security rules, but CAS provides a simpler configuration for standard use cases.

22,126

Open Source Identity and Access Management For Modern Applications and Services

Pros of Keycloak

  • More comprehensive identity and access management solution, offering features beyond authentication
  • Easier setup and configuration with a user-friendly admin console
  • Better support for modern protocols like OAuth 2.0 and OpenID Connect out of the box

Cons of Keycloak

  • Higher resource consumption, potentially less suitable for lightweight deployments
  • Steeper learning curve for advanced customizations and extensions
  • Less flexibility in certain authentication scenarios compared to CAS

Code Comparison

Keycloak (Java)

public class CustomAuthenticator implements Authenticator {
    @Override
    public void authenticate(AuthenticationFlowContext context) {
        // Custom authentication logic
    }
}

CAS (Java)

public class CustomAuthenticationHandler implements AuthenticationHandler {
    @Override
    public AuthenticationHandlerExecutionResult authenticate(Credential credential) {
        // Custom authentication logic
    }
}

Both projects use Java and follow similar patterns for extending authentication functionality. Keycloak's approach is more focused on authentication flows, while CAS provides a more direct handler-based approach. The code structures reflect their respective architectures and design philosophies.

2,410

Security engine for Java (authentication, authorization, multi frameworks): OAuth, CAS, SAML, OpenID Connect, LDAP, JWT...

Pros of pac4j

  • Lightweight and flexible authentication/authorization library
  • Supports multiple protocols and frameworks
  • Easy integration with various Java web technologies

Cons of pac4j

  • Less comprehensive out-of-the-box features compared to CAS
  • Requires more configuration and setup for complex scenarios
  • Smaller community and ecosystem

Code Comparison

pac4j example:

Config config = new Config(new GoogleClient("clientId", "secret"));
SecurityFilter filter = new SecurityFilter(config, "GoogleClient");

CAS example:

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    http.authorizeRequests()
        .antMatchers("/secure").authenticated()
        .and().csrf().disable();
    return http.build();
}

pac4j focuses on providing a flexible authentication engine, while CAS offers a more comprehensive single sign-on solution. pac4j's code tends to be more concise and adaptable to different scenarios, whereas CAS provides a more structured approach with built-in security features.

Both projects have their strengths, with pac4j being more suitable for developers who need fine-grained control over authentication mechanisms, and CAS being better for organizations looking for a complete SSO solution with extensive features out of the box.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

Central Authentication Service (CAS)

License Twitter Gitter Slack Stack Overflow Support

Introduction

Welcome to the home of the Central Authentication Service project, more commonly referred to as CAS. CAS is an enterprise multilingual identity provider and single sign-on solution for the web and attempts to be a comprehensive platform for your authentication and authorization needs.

CAS is an open and well-documented authentication protocol. The primary implementation of the protocol is an open-source Java server component by the same name hosted here, with support for a plethora of additional authentication protocols and features such a SAML2, OpenID Connect, MFA and many many more.

Contributions

Contributing Guide Open Pull Requests

If you have already identified an enhancement or a bug, it is STRONGLY recommended that you submit a pull request to address the case. There is no need for special ceremony to create separate issues. The pull request IS the issue and it will be tracked and tagged as such.

Contributors

Documentation Javadoc

VersionReference
Link
Link
Link

Additional resources are available as follows:

Getting Started

Maven Central GitHub Releases

It is recommended to deploy CAS locally using the WAR Overlay method. Cloning or downloading the CAS codebase is ONLY required if you wish to contribute to the development of the project.

We recommend that you review this page to get started with your CAS deployment.

Features

The following features are supported by the CAS project:

  • CAS v1, v2 and v3 Protocol
  • SAML v1 and v2 Protocol
  • OAuth v2 Protocol
  • OpenID Connect Protocol
  • WS-Federation Passive Requestor Protocol
  • Authentication via JAAS, LDAP, RDBMS, X.509, Radius, SPNEGO, JWT, Remote, Apache Cassandra, Trusted, BASIC, MongoDB, Pac4J and more.
  • Delegated authentication to WS-FED, Facebook, Twitter, SAML IdP, OpenID Connect, CAS and more.
  • Authorization via ABAC, Time/Date, REST, Internet2's Grouper and more.
  • HA clustered deployments via Hazelcast, JPA, Apache Cassandra, Memcached, Apache Ignite, MongoDB, Redis, DynamoDb, and more.
  • Application registration backed by JSON, LDAP, YAML, Apache Cassandra, JPA, MongoDB, DynamoDb, Redis and more.
  • Multifactor authentication via Duo Security, Simple MFA, YubiKey, RSA, Google Authenticator, WebAuthn and more.
  • Administrative UIs to manage logging, monitoring, statistics, configuration, client registration and more.
  • Global and per-application user interface theme and branding.
  • Password management and password policy enforcement.
  • Deployment options using Apache Tomcat, Jetty, Undertow, packaged and running as Docker containers.

The foundations of CAS are built upon: Spring Boot and Spring Cloud.

Development Revved up by Develocity codecov

Support

Apereo CAS is 100% free open source software managed by Apereo, licensed under Apache v2. Our community has access to all releases of the CAS software with absolutely no costs. We welcome contributions from our community of all types and sizes. The time and effort to develop and maintain this project is dedicated by a group of volunteers and contributors. Commercial support options may be found here. If you (or your employer) benefit from this project, please consider becoming a Friend of Apereo and contribute.