Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
cnaf-annual-report-2017
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Container Registry
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
This is an archived project. Repository and other project resources are read-only.
Show more breadcrumbs
Lucia Morganti
cnaf-annual-report-2017
Commits
516d5066
Commit
516d5066
authored
6 years ago
by
Marco Caberletti
Browse files
Options
Downloads
Patches
Plain Diff
Add Esaco contribution
parent
58fcb552
No related branches found
Branches containing commit
No related tags found
1 merge request
!6
Contributi SD middleware
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
contributions/mw-esaco/mw-esaco.tex
+47
-12
47 additions, 12 deletions
contributions/mw-esaco/mw-esaco.tex
with
47 additions
and
12 deletions
contributions/mw-esaco/mw-esaco.tex
+
47
−
12
View file @
516d5066
...
...
@@ -23,39 +23,74 @@
}
\begin{abstract}
E
SACO
is a service that has the responsibility of checking validity and signatures
E
saco
is a service that has the responsibility of checking validity and signatures
of OAuth tokens for registered trusted OAuth authorization servers.
Th
e daemon
exposes an OAuth token introspection endpoint compliant with RFC 7662
Th
is service
exposes an OAuth token introspection endpoint compliant with RFC 7662
that can be used by authenticated clients to inspect tokens.
The
daemon
can only introspect JWT access tokens that contain the iss claim.
The
service
can only introspect JWT access tokens that contain the
\texttt
{
iss
}
claim.
\end{abstract}
\section*
{
Introduction
}
Esaco~
\cite
{
esaco
}
was initially developed to integrate the Argus Authorization
Service~
\cite
{
argus
}
with the Indigo IAM Login Service~
\cite
{
indigo-iam
}
.
The initial goal was to introduce in Argus the ability to understand OAuth tokens and
write authorization policies based on the token claims.
To achieve this, we need two things: a new Argus PIP that understand OAuth tokens and
a service that interact with the token issuer to validate the access tokens and get more
information about the user.
Esaco covers the second requirement to achieve this integration.
\section*
{
Usage
}
Esaco is registered as a client at one (or more) trusted OAuth authorization servers,
and is used by client applications as a gateway for token validation and introspection.
Esaco performs local JWT validation checks and leverages the introspection endpoints
at trusted AS to inspect a submitted token. The result of a token introspection is cached,
if caching is enabled.
\section*
{
How Esaco works
}
Esaco is a very light Spring Boot~
\cite
{
spring-boot
}
application, developed in Java.
It runs behind a reverse proxy to enable the SSL communication with both Argus and
the configured OAuth authorization servers (AS).
Esaco is registered as a client at one (or more) trusted OAuth authorization servers,
listed into the configuration file, and is used by client applications as a gateway
for token validation and introspection.
Esaco expose two endpoints: an endpoint compliant with the standard RFC 7662 OAuth
Token Introspection and another not-standard endpoint, that return a data structure
used by Argus, that is the union of the token introspection and the user details obtained
from the
\texttt
{
userinfo
}
endpoint of the issuer authorization server.
When a token is submitted to Esaco, it performs local JWT validation checks and
leverages the introspection endpoints at trusted AS to inspect the token.
The result of a token introspection is cached, if caching is enabled, to speedup
other following introspection requests.
Esaco is not bounded to Argus, but it is general purpose service.
Another usefull integration, is the use of Esaco to overcome the limitation of
the Apache OpenID-Connect module, that support only a single OAuth issuer.
\section*
{
About the name
\textit
{
Esaco
}}
In Greek mythology,
\textit
{
Esaco
}
(or
\textit
{
Aesacus
}
) was a son of king Prim of Troy, half
brother of
\textit
{
Cassandra
}
.
In Greek mythology,
\textit
{
Esaco
}
(or
\textit
{
Aesacus
}
) was a son of king Prim of Troy,
half brother of the most famous
\textit
{
Cassandra
}
.
\textit
{
Esaco
}
was born with the gift of the interpretation of dreams, so
people ask him to understand their own dreams.
One day he catches sight of the nymph Hesperia, falls in love, and pursues her.
However, Hesperia dies because of the bite of a poisonous snake.
\textit
{
Esaco
}
, unable to bear living any longer, leaps from a tall cliff
into the sea but as he plunges, he is changed into a bird by the godess Tethys.
\textit
{
Esaco
}
still attempts to dive into the depth yet continues still to live
in the form of a diving bird, called
\textit
{
smergo
}
.
Just as Esaco in the Greek myth interpreted the people dreams, our Esaco service
introspect and decode the JWT access token.
\section*
{
References
}
\begin{thebibliography}
{
99
}
\bibitem
{
esaco
}
Esaco on GitHub
\url
{
https://github.com/indigo-iam/esaco
}
\bibitem
{
esaco
}
Esaco on GitHub
\url
{
https://github.com/indigo-iam/esaco
}
\bibitem
{
argus
}
Argus Authorization Service
\url
{
https://argus-documentation.readthedocs.io
}
\bibitem
{
indigo-iam
}
Indigo IAM documentation
\url
{
https://indigo-iam.github.io/docs
}
\bibitem
{
spring-boot
}
Spring Boot project
\url
{
https://projects.spring.io/spring-boot/
}
\bibitem
{
rfc7662
}
RFC 7662 OAuth 2.0 Token Introspection
\url
{
https://tools.ietf.org/html/rfc7662
}
\bibitem
{
mod-apache-oidc
}
Apache OpenID-Connect module
\url
{
https://github.com/zmartzone/mod
_
auth
_
openidc
}
\end{thebibliography}
\end{document}
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment