{"id":28485314,"url":"https://github.com/exo-portal/exo-auth","last_synced_at":"2026-04-05T21:03:49.957Z","repository":{"id":293024048,"uuid":"982184288","full_name":"exo-portal/exo-auth","owner":"exo-portal","description":"Exo Auth is the authentication service for Exo, supporting HttpOnly cookies, JWT, and OAuth for secure and flexible user authentication. It ensures robust access control and seamless integration across Exo services.","archived":false,"fork":false,"pushed_at":"2025-06-26T16:16:27.000Z","size":101,"stargazers_count":0,"open_issues_count":0,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-26T17:26:51.072Z","etag":null,"topics":["authentication","authorization","backend","java","maven","oauth2","spring","spring-boot","spring-security","sql","yml"],"latest_commit_sha":null,"homepage":"","language":"Java","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/exo-portal.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-05-12T13:53:06.000Z","updated_at":"2025-06-26T16:16:28.000Z","dependencies_parsed_at":"2025-06-19T15:37:25.494Z","dependency_job_id":null,"html_url":"https://github.com/exo-portal/exo-auth","commit_stats":null,"previous_names":["exo-portal/exo-auth"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/exo-portal/exo-auth","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exo-portal%2Fexo-auth","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exo-portal%2Fexo-auth/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exo-portal%2Fexo-auth/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exo-portal%2Fexo-auth/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/exo-portal","download_url":"https://codeload.github.com/exo-portal/exo-auth/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/exo-portal%2Fexo-auth/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263074397,"owners_count":23409755,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authentication","authorization","backend","java","maven","oauth2","spring","spring-boot","spring-security","sql","yml"],"created_at":"2025-06-08T00:09:44.365Z","updated_at":"2025-12-30T22:07:39.416Z","avatar_url":"https://github.com/exo-portal.png","language":"Java","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Exo Auth\n\nExo(Employee eXperience Organization) Auth is the authentication service for Exo, supporting HttpOnly cookies, JWT, and OAuth for secure and flexible user authentication. It ensures robust access control and seamless integration across Exo services.\n\n---\n\n## Features\n\n- **HttpOnly Cookies**: Secure session management to prevent XSS attacks.\n- **JWT**: Stateless authentication for scalable and efficient user sessions.\n- **OAuth**: Third-party authentication for seamless user onboarding.\n- **Access Control**: Role-based and permission-based access management.\n- **Integration**: Designed for seamless integration across Exo services.\n\n---\n\n## Benefits\n\n- **Enhanced Security**: Protects user data with industry-standard authentication mechanisms.\n- **Scalability**: Supports stateless authentication for high-performance applications.\n- **Flexibility**: Offers multiple authentication methods to suit diverse requirements.\n- **Consistency**: Ensures uniform authentication across all Exo services.\n\n---\n\n## Tech Stack\n\n- ![Java](https://img.shields.io/badge/Java-ED8B00?style=for-the-badge\u0026logo=java\u0026logoColor=white) **Java**\n- ![Spring Boot](https://img.shields.io/badge/Spring%20Boot-6DB33F?style=for-the-badge\u0026logo=springboot\u0026logoColor=white) **Spring Boot**\n- ![Maven](https://img.shields.io/badge/Maven-C71A36?style=for-the-badge\u0026logo=apachemaven\u0026logoColor=white) **Maven**\n- ![MySQL](https://img.shields.io/badge/MySQL-4479A1?style=for-the-badge\u0026logo=mysql\u0026logoColor=white) **MySQL**\n- ![JWT](https://img.shields.io/badge/JWT-000000?style=for-the-badge\u0026logo=jsonwebtokens\u0026logoColor=white) **JWT**\n- ![OAuth](https://img.shields.io/badge/OAuth-3C873A?style=for-the-badge\u0026logo=oauth\u0026logoColor=white) **OAuth**\n- ![Git](https://img.shields.io/badge/Git-F05032?style=for-the-badge\u0026logo=git\u0026logoColor=white) **Git**\n- ![Microservices](https://img.shields.io/badge/Microservices-FF5733?style=for-the-badge\u0026logo=microservices\u0026logoColor=white) **Microservices**\n\n---\n\n## Getting Started\n\n### Prerequisites\n\n- **Java**: Ensure Java is installed (version 17 or higher recommended).\n- **Maven**: Build and manage dependencies using Maven.\n\n---\n\n### Installation\n\nAdd the following dependency to your `pom.xml`:\n\n```xml\n\u003cdependency\u003e\n    \u003cgroupId\u003ecom.exodia_portal\u003c/groupId\u003e\n    \u003cartifactId\u003eexo-auth\u003c/artifactId\u003e\n    \u003cversion\u003e1.0.0\u003c/version\u003e\n\u003c/dependency\u003e\n```\n\n\n---\n\n## Setup\n\n### Configuring `application.yml`\n\nTo set up the application, create an `application.yml` file in the `src/main/resources` directory with the following structure:\n\n```yaml\nspring:\n  security:\n    oauth2:\n      client:\n        registration:\n          google:\n            client-id: ${GOOGLE_CLIENT_ID}\n            client-secret: ${GOOGLE_CLIENT_SECRET}\n            scope: profile, email\n            redirect-uri: \"{baseUrl}/login/oauth2/code/{registrationId}\"\n          github:\n            client-id: ${GITHUB_CLIENT_ID}\n            client-secret: ${GITHUB_CLIENT_SECRET}\n            scope: read:user, user:email\n            redirect-uri: \"{baseUrl}/login/oauth2/code/{registrationId}\"\n  datasource:\n    name: dev-server\n    driver-class-name: com.mysql.cj.jdbc.Driver\n    url: jdbc:mysql://localhost:3306/exo-portal\n    username: ${DB_USERNAME}\n    password: ${DB_PASSWORD}\n  jpa:\n    hibernate:\n      ddl-auto: update\n    show-sql: \"true\"\n    database-platform: org.hibernate.dialect.MySQL8Dialect\nserver:\n  port: 8080\njwt:\n  secret: ${JWT_SECRET}\n  access:\n    expiration: 3600000\n  refresh:\n    expiration: 86400000\n```\n\n---\n\n**Environment Variables**\n\n| Variable Name         | Description                          |\n|-----------------------|--------------------------------------|\n| `GOOGLE_CLIENT_ID`    | Google OAuth client ID              |\n| `GOOGLE_CLIENT_SECRET`| Google OAuth client secret          |\n| `GITHUB_CLIENT_ID`    | GitHub OAuth client ID              |\n| `GITHUB_CLIENT_SECRET`| GitHub OAuth client secret          |\n| `DB_USERNAME`         | MySQL database username             |\n| `DB_PASSWORD`         | MySQL database password             |\n| `JWT_SECRET`          | Secret key for signing JWT tokens   |","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexo-portal%2Fexo-auth","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fexo-portal%2Fexo-auth","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fexo-portal%2Fexo-auth/lists"}