Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
e058d1f
Implement OAuth server and MCP OAuth integration
rboixaderg May 24, 2026
ed7a61b
Fix OAuth routing and validation
rboixaderg May 24, 2026
4aa21b2
Complete OAuth MCP phase coverage
rboixaderg May 24, 2026
5dfdce4
feat: Enhance OAuth functionality and documentation
rboixaderg May 29, 2026
5cf426a
feat: Several improves following RFCs
rboixaderg May 31, 2026
534b87b
feat: Harden OAuth security compliance
rboixaderg May 31, 2026
78c3e60
feat: Manage OAuth consents with TTL and revocation
rboixaderg May 31, 2026
c6623c4
feat: Enhance OAuth request validation and MCP resource handling
rboixaderg Jun 1, 2026
c262a95
feat: Refactor OAuth handling and enhance documentation
rboixaderg Jun 1, 2026
bdfb61b
refactor: Update OAuth documentation and remove OpenID compatibility
rboixaderg Jun 3, 2026
05c5775
fix(oauth): satisfy ci checks
rboixaderg Jun 3, 2026
3f4969a
fix(oauth): address reviewer robustness issues
rboixaderg Jun 3, 2026
710f7ff
fix(oauth): make cleanup compatible with cockroachdb
rboixaderg Jun 3, 2026
5c68cbc
fix(oauth): update MCP configuration in documentation
rboixaderg Jun 3, 2026
598a2f2
refactor(oauth): restructure OAuth API endpoints and enhance request …
rboixaderg Jun 14, 2026
f82d7d1
style(oauth): fix black/isort formatting in authorize endpoint and mc…
rboixaderg Jun 14, 2026
f0be021
fix(oauth): align well-known protected-resource metadata with tests a…
rboixaderg Jun 14, 2026
5938def
refactor(oauth): remove unused issuer path and redirect URI validatio…
rboixaderg Jun 14, 2026
9035ee2
delete: remove outdated OAuth documentation files
rboixaderg Jun 14, 2026
ed8e6f0
feat(mcp): enhance MCP action service with authentication and authori…
rboixaderg Jun 14, 2026
561b183
chore: isort
rboixaderg Jun 14, 2026
f6e4891
refactor: Refactor OAuth contrib, reorganize utils, clarify API flow …
rboixaderg Jun 15, 2026
e952545
chore: update AGENTS.md
rboixaderg Jun 15, 2026
20352b4
refactor(oauth): replace current_user_or_none with get_authenticated_…
rboixaderg Jun 15, 2026
e2c8cf1
refactor(oauth): streamline OAuth implementation by removing unused m…
rboixaderg Jun 16, 2026
f8afc2f
test(oauth): add comprehensive unit tests for OAuth functionality, in…
rboixaderg Jun 16, 2026
0fcb5f1
refactor(oauth): reorganize OAuth resource indicators and discovery h…
rboixaderg Jun 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ pip-wheel-metadata
/.idea/
/.Python
/venv
/.venv
# files
*.log
*.swp
Expand Down
18 changes: 17 additions & 1 deletion AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,15 @@
- Run tests:
- `.venv/bin/pytest guillotina/tests`
- Targeted: `.venv/bin/pytest guillotina/tests/<path>`
- Run GitHub Actions parity checks locally before finishing code changes:
- `.venv/bin/flake8 guillotina --config=setup.cfg`
- `.venv/bin/isort --check-only guillotina/`
- `.venv/bin/black --check --verbose guillotina`
- `.venv/bin/mypy --config-file setup.cfg guillotina/`
- `.venv/bin/pytest -rfE --reruns 2 --cov=guillotina -s --tb=native -v --cov-report xml --cov-append guillotina`

## Validation
- Always run the same local checks as GitHub Actions before marking code work complete. If any check cannot be run locally, state the exact command, the blocker, and whether the equivalent GitHub Actions check is expected to cover it.
- For contrib changes, run focused tests under the touched contrib test folder.
- For API/service changes, verify status codes and response payload contracts.
- Keep docs updated under `docs/source/contrib/` when adding contrib features.
Expand All @@ -35,7 +42,16 @@
- Avoid wrapper layers when task explicitly requires low-level protocol primitives.
- Never commit credentials or local environment files.

## Code Intention and Clarity
- Code should read like a book: the flow of a module should tell the story of what is happening.
- Names must express intent, not implementation details. Ask: "what does the caller care about?"
- Prefer `rate_limit_exceeded()` over `check_and_record_rate_limit()`.
- Prefer `build_client_from_registration()` over `make_client()`.
- Prefer `generate_opaque_token()` over `generate_opaque_token_value()`.
- Do not hide side effects behind names that look like pure queries.
- Keep functions small and at a single level of abstraction; each step should read as the next sentence.
- A name does not need to describe every detail, but it must not lie or obscure the consumer's goal.

## Task Closeout Notes
- Update `CHANGELOG.rst` for notable changes.
- Record branch name, commit hash, validation output, and task evidence in Ops Tracker.

5 changes: 5 additions & 0 deletions CHANGELOG.rst
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,11 @@ CHANGELOG
7.1.3 (unreleased)
------------------

- OAuth: implement Guillotina OAuth 2.0 authorization server with authorization-code flow,
dynamic client registration, token refresh/revocation, consent management and well-known
metadata. Compliant with RFC 6749, RFC 7636, RFC 7591, RFC 8414, RFC 9207, RFC 9700 and
RFC 9728.
[rboixaderg]
- MCP: enforce Guillotina content permissions for tools and resources,
require ``ViewContent`` for full serialized JSON, isolate cached tool
responses by principal/container/context, and invalidate MCP cache on
Expand Down
228 changes: 228 additions & 0 deletions docs/source/_static/oauth-flow.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
1 change: 1 addition & 0 deletions docs/source/contrib/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -17,4 +17,5 @@ Contents:
swagger
mailer
dbusers
oauth
mcp
Loading
Loading