<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta>
      <journal-title-group>
        <journal-title>International Conference on Business Information
Security, November</journal-title>
      </journal-title-group>
    </journal-meta>
    <article-meta>
      <title-group>
        <article-title>Advanced Security Mechanisms in the Spring Framework: JWT, OAuth, LDAP and Keycloak</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Nikola Dimitrijević</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Nemanja Zdravković</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Milena Bogdanović</string-name>
          <xref ref-type="aff" rid="aff1">1</xref>
        </contrib>
        <contrib contrib-type="author">
          <string-name>Aleksandar Mesterovic</string-name>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Department of Security Studies and Criminology, Faculty of Art, Macquarie University</institution>
          ,
          <addr-line>Sydney</addr-line>
          ,
          <country country="AU">Australia</country>
        </aff>
        <aff id="aff1">
          <label>1</label>
          <institution>Faculty of Information Technology, Belgrade Metropolitan University</institution>
          ,
          <addr-line>Tadeuša Košćuška 63, 11000 Belgrade</addr-line>
          ,
          <country country="RS">Serbia</country>
        </aff>
      </contrib-group>
      <pub-date>
        <year>2024</year>
      </pub-date>
      <volume>24</volume>
      <issue>2023</issue>
      <fpage>0000</fpage>
      <lpage>0002</lpage>
      <abstract>
        <p>The security of software applications is a critical concern in modern software development, especially with the prevalence of distributed systems and microservices. The Spring Framework stands out as a premier Java ecosystem development platform that ofers an extensive range of options for implementing robust security mechanisms. This paper will shift its focus to explore advanced approaches to securing enterprise environments using the Spring Framework; specifically discussing topics such as JSON Web Token (JWT), OAuth 2.0, Lightweight Directory Access Protocol (LDAP) and Keycloak-based solutions. The use of JWT is pivotal for the secure communication of information between disparate parties, particularly in the context of stateless authentication inherent to micro-service architectures. OAuth 2.0 serves as a standard for authorization that permits users access to shared resources while safeguarding sensitive user credentials from being exposed unnecessarily. LDAP ifnds practical applicability by facilitating centralized management and governance over identities and privileged accesses, chiefly advantageous when dealing with complex organizational structures at scale. As an open-source platform solution specifically tailored towards identity recognition and managed authorizations, Keycloak ofers integration opportunities within Spring applications ecosystem where it introduces support services catering to commonly accepted protocols such as OpenID Connect or SAML; providing sound solutions essential in ensuring well-regulated confidential interactions akin during situations demanding trusted validations occasioned by both internal needs or external supply chain partners alike. In this, paper, we investigate the manner in which advanced technologies can be suitably employed within the Spring Framework for creating secure and scalable applications. The analysis delves into each of these mechanisms, outlining their advantages and challenges along with integration considerations when complex business scenarios arise. Ultimately, this exploration is intended to enhance comprehension surrounding progressive security measures applicable to the Spring environment thereby equipping developers with improved capacity for constructing more resilient application solutions.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>1. Introduction</title>
      <sec id="sec-1-1">
        <title>The Spring Framework has become a fundamental com</title>
        <p>
          ponent in the development of contemporary Java-based
applications. This is particularly attributed to its
extensive infrastructure support for application building [
          <xref ref-type="bibr" rid="ref1">1</xref>
          ].
A core feature within this framework is Spring Security;
an influential and personalized authentication and access
control system that plays a critical role in safeguarding
applications against prevalent security threats.
        </p>
        <p>
          The Spring Framework, which was first introduced
in 2003, brought about a significant transformation to
Java development by introducing an Inversion of Control
(IoC) container that is lightweight and simplified the
management of application components. This
groundbreaking concept has evolved over time with the inclusion of
various modules designed to cater to diferent aspects
of enterprise application development. Notably among
these arrangements is the Spring Security module that
plays an important role in securing applications through
its provision of comprehensive security services tailored
for Java EE-based enterprise software applications [
          <xref ref-type="bibr" rid="ref2">2</xref>
          ].
        </p>
        <p>
          According to [
          <xref ref-type="bibr" rid="ref3 ref4">3, 4</xref>
          ] 44.1% of respondents use the free
AdoptOpenJDK distribution in production. However,
Oracle still has a significant presence, with 28% for their
OpenJDK build and 23% for the commercial Oracle JDK.
        </p>
        <p>
          The JSON Web Token ( JWT) represents a widely
adopted and established medium of securely exchanging
information as JSON objects among entities. These
tokens stand out for their compactness, compatibility with
URLs, digital signature support resulting in enhanced
security features, therefore constituting an ideal option
in stateless authentication contexts within contemporary
web applications [
          <xref ref-type="bibr" rid="ref5">5</xref>
          ]. When merged into Spring Security
System Architecture , JWTs provide reliable and
uninterrupted mechanisms compatible with the overall design
of secure non-session-based functionalities instructured
developments derived from spring programming
methodAdoptOpenJDK builds of OpenJDK
        </p>
        <p>Oracle OpenJDK</p>
        <p>Oracle JDK</p>
        <p>Azul Zulu builds of OpenJDK</p>
        <p>Amazon Corretto builds of OpenJDK
The Linux Distro's bundled OpenJDK package</p>
        <p>Red Hat builds of openJDK
Oracle GraalVM Community Edition</p>
        <p>IBM Java SDK</p>
        <p>Azul Zing
Alibaba Dragonwell builds of OpenJDK</p>
        <p>Bellsoft Liberica builds of OpenJDK
Eclipse Adoptium builds of OpenJDK
Oracle GraalVM Enterprise Edition
SAP SapMachine builds of OpenJDK</p>
        <p>Other</p>
        <p>None</p>
      </sec>
    </sec>
    <sec id="sec-2">
      <title>2. JWT and Its Implementation in</title>
    </sec>
    <sec id="sec-3">
      <title>Spring Framework</title>
      <p>The OAuth 2.0 framework serves as a means of
authorization that allows applications to acquire restricted
access to user accounts on an HTTP service. This process
involves the delegation of user authentication tasks to The use of JWT has garnered considerable significance
the hosting service, as described by Hardt in 2012. In rela- in contemporary web security practices as it provides a
tion to Spring Security, OAuth 2.0 presents a formidable concise and autonomous approach for transferring
intechnique for safeguarding RESTful services and APIs formation between participants via a JSON object that
through outsourcing user authentication functions to- facilitates high-level confidentiality. JWTs are designed
wards an external authorization server. to enable signing mechanisms, which can be achieved by</p>
      <p>
        The Lightweight Directory Access Protocol (LDAP) is employing either secret key cryptography utilizing the
a commonly utilized protocol for accessing and maintain- HMAC algorithm or public-private encryption with RSA
ing distributed directory information services over an or ECDSA algorithms, thereby assuring data integrity
Internet Protocol (IP) network. Within Spring Security, during transmission [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ]. With such authentication
proLDAP assumes a pivotal role in managing user identi- tocols in place that do not rely on session state storage,
ties and access control - particularly within extensive JWT serves aptly suited scenarios like RESTful APIs.
enterprise environments as flagged by Rouse’s research A JWT generally comprises of three components: a
ifndings in 2005. header, a payload and a signature. The header typically
      </p>
      <p>
        Keycloak is an open-source solution for Identity and encompasses two parts that comprise the kind of token
Access Management that caters to contemporary appli- - which is JWT - and the algorithm for signing being
cations and services. It harbors a vast array of features utilized. The payload entails claims regarding an entity
including Single-Sign On (SSO), identity brokering, as (usually the user) alongside supplementary data. Finally,
well as social login capabilities. Keycloak efectively inte- to guarantee that no changes have been made after
isgrates with Spring Security platforms allowing develop- suance, we use signatures in order to ensure authenticity
ers seamless access to diverse authentication mechanisms over time lapse periods.
alongside authorization protocols which enhance the se- Spring Security ofers comprehensive backing to JWT.
curity parameters over their application environment The incorporation of JWT within Spring Security
facil[
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. itates developers with an opportunity to address user
      </p>
      <p>
        The incorporation of sophisticated security mecha- authentication and authorization in a non-persistent
apnisms, namely JWT, OAuth, LDAP and Keycloak into proach, thereby proving significantly advantageous for
the Spring Framework via Spring Security epitomizes a RESTful applications. With the help of the Spring
Secunoteworthy progression towards creating secure Java ap- rity framework, validation procedures for JWTs are made
plications. This amalgamation not only streamlines the accessible; ensuring that they possess proper formation
implementation process for intricate security requisites whilst verifying their signature as well as claims’ validity
but also guarantees that these applications are resilient [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ].
against an extensive gamut of adversarial incursions. When incorporating JWT into a Spring
application, developers commonly rely on established
libraries such as spring-security-oauth2 or
spring-security-jwt. These libraries contain the
essential resources required to eficiently generate,
analyze and authenticate JWTs. The implementation
process entails configuring a JwtTokenStore and
JwtAccessTokenConverter while providing an
optional TokenEnhancer for supplementing additional
information within the JWT. Furthermore, it is
imperative that developers configure an authentication manager
in addition to outlining security restrictions placed upon
endpoints utilized by said application instance.
      </p>
      <p>The JWT protocol is especially advantageous in
situations where it is essential to establish the authenticity of a
user and their requisite authorizations for accessing
designated resources. It serves as an added advantage within
microservices architecture, wherein secure inter-service
communication becomes imperative. To optimally
utilize JWT with Spring framework, established guidelines
comprise deployment of HTTPS to safeguard token
interception threats, setting realistic expiration timeframes
for tokens and judicious management pertaining
information contained in payload sections so that sensitive
data may not get exposed inadvertently.</p>
      <p>
        The incorporation of JSON into Spring Security
provides a dependable and eficient approach to managing
authentication and authorization in an immutable
fashion. Its versatility combined with its user-friendliness
render it an optimal alternative for safeguarding
applications based on the Spring framework, specifically those
structured around micro-services as well as RESTful
services.
3. OAuth 2.0
OAuth 2.0 is an authorization framework that grants
third-party applications limited access to an HTTP
service, whether through representation of a resource owner
or autonomous acquisition of access privileges. Its
distinction from authentication renders it indispensable in
situations wherein user data must be requested from
other services without compromising their respective
credentials [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ]. OAuth 2.0 introduces several roles:
• Resource Owner: The user who authorizes an
      </p>
      <p>application to access their account.
• Resource Server: Hosts the protected user data.
• Client: The application requesting access to the</p>
      <p>user’s account.
• Authorization Server: Validates the identity of</p>
      <p>the resource owner and issues access tokens.</p>
      <p>OAuth 2.0 specifies four primary grant types, catering
to diferent application types:
• Authorization Code Grant: Ideal for clients that</p>
      <p>can securely store client secrets.
• Implicit Grant: Designed for clients that are
un</p>
      <p>able to securely store client secrets.
• Resource Owner Password Credentials Grant:</p>
      <p>Suitable for highly trusted clients.
• Client Credentials Grant: Used for applications</p>
      <p>accessing their own resources.</p>
      <sec id="sec-3-1">
        <title>Spring Security’s OAuth 2.0 support simplifies the implementation of these grant types:</title>
        <p>User
(Resource Owner)
User agent
(Web browser)
1. User Authorization Request
2. User Authorizes Application
3. Authorization Code Grant
authorization protocols in applications. Through the
strategic employment of Spring’s configuration and
customization capabilities, developers possess the ability to
tailor OAuth 2.0 implementation to address diverse
application requirements while ensuring optimal functionality
and security measures are upheld.</p>
      </sec>
    </sec>
    <sec id="sec-4">
      <title>4. LDAP</title>
      <p>The utilization of OAuth 2.0 within Spring Security
presents a sturdy architecture for establishing secure
• Dependency Management: Include Spring LDAP
and Spring Security LDAP dependencies in your
project.
• LDAP Context Source Configuration: Configure
an LdapContextSource to specify the URL and
base sufix of the LDAP server.
• LDAP Authentication Provider: Set up an
LdapAuthenticationProvider to handle
authentication requests. This involves specifying a
user search base, user search filter, and optionally
a group search base and group search filter.
• User Details Mapping: Map LDAP attributes to
user details in Spring Security. This can be done
using DefaultLdapAuthoritiesPopulator
for role retrieval and PersonContextMapper
for user information mapping.
• Security Configuration: Define security
constraints in the Spring Security configuration,
specifying which endpoints are protected and which
are publicly accessible.</p>
      <p>Advanced LDAP configurations in Spring can include:
• Custom User Details Service: Implementing a
custom user details service for more complex user
information retrieval.
• Password Policies: Configuring password policies
and handling password exceptions.
• LDAP Templates: Using LdapTemplate for more
complex LDAP operations beyond authentication.</p>
      <sec id="sec-4-1">
        <title>When implementing LDAP in Spring, it’s important to</title>
        <p>follow best practices:
• Secure Communication: Use LDAPS (LDAP over
SSL) for secure communication with the LDAP
server.
• Password Handling: Ensure that passwords are
not logged or stored in an insecure manner.
• Injection Protection: Guard against LDAP
injection attacks by validating and sanitizing input.
• Dependency Management: Include the Keycloak</p>
        <p>Spring Boot adapter dependency in your project.
• Keycloak Server Setup: Set up and configure a
Keycloak server, defining realms, clients, roles,
and users.
• Spring Boot Application Configuration:
Configure the Spring Boot application to use Keycloak
for authentication and authorization. This
involves setting up Keycloak properties in the
application.properties or application.yml file.
• Security Configuration: Configure Spring
Security to use Keycloak’s adapter for authentication.
This includes defining security constraints and
specifying protected resources in the application.
• User and Role Management: Utilize Keycloak’s
administration console to manage users and roles,
which can be mapped to Spring Security
authorities.</p>
      </sec>
    </sec>
    <sec id="sec-5">
      <title>5. Keycloak</title>
      <p>The incorporation of LDAP into Spring Security
presents a highly efective approach to managing user Keycloak’s integration with Spring allows for
adauthentication and authorization across enterprise appli- vanced customizations, such as:
cations. Through the advantageous utilization of Spring’s
inherent support for LDAP, software developers can
establish seamless connectivity with LDAP directories
while concurrently fortifying security and scalability
within their respective application frameworks.
• Custom User Attributes: Adding and managing</p>
      <p>custom user attributes in Keycloak.
• Identity Brokering: Configuring Keycloak to act
as an identity broker between diferent identity
providers.
• Theme Customization: Customizing the look and
feel of login pages and emails.</p>
      <p>
        Keycloak is a state-of-the-art solution for Identity and When integrating Keycloak with Spring, it’s important
Access Management, developed by Red Hat as an open- to follow best practices:
source software. Its primary objective lies in
streamlining the integration of standard protocols such as OpenID • Secure Communication: Ensure that all
communiConnect and SAML 2.0 into authentication processes cations between the Spring application and
Keywhile facilitating authorization procedures. In addition cloak server are secured using HTTPS.
to centralized management console capabilities concern- • Client Secrets: Securely manage and store client
ing user identities, Keycloak enables features that ensure secrets used for communication with Keycloak.
SSO, two-factor authentication, and social login function- • Token Validation: Implement proper token
valialities are supported eficiently. These advanced security dation in the Spring application to prevent
unauprovisions make it particularly suited for safeguarding thorized access.
modern applications’ integrity within diverse service Keycloak’s integration into Spring Security ofers a
environments where tailored identity management solu- powerful and flexible solution for managing
authentitions are highly valued [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ]. cation and authorization in applications. By leveraging
      </p>
      <p>In the context of Spring Security, Keycloak presents Keycloak, developers can enhance the security of their
itself as a viable choice for an authentication and autho- Spring applications, taking advantage of features like
rization server. As such, it afords Spring applications the SSO, token-based authentication, and user federation.
option to delegate their user authentication and
authorization protocols directly to Keycloak—a dynamic that
subsequently streamlines security management eforts. 6. Literature overview
This integration furthermore empowers said applications
with access to advanced features exclusive to Keycloak; JWTs have now become a critical component for
ensurexamples include SSO, token-based authentication mea- ing web security in contemporary times. In the context of
sures, in addition to user federation capabilities. this, a scholarly research titled "Enhancing JWT
Authen</p>
      <p>
        Implementing Keycloak in a Spring application typi- tication and Authorization in Web Applications Based on
cally involves several steps: User Behavior History" published in 2022 underlines the
vital significance of incorporating user behavior history or theft risk. OAuth 2.0 serves as an extensive yet
adaptwhile utilizing JWT to optimize overall application secu- able authorization framework suitable across diverse
aprity. It is noteworthy that Spring Security endorses such plication types such IoT implementations; nevertheless
an approach via providing robust support for implement- complexity may present challenges during
implementaing stateless authentication and authorization features tion while strict adherence to best practice guidelines
using JWT [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ]. must be maintained continuously throughout operation.
      </p>
      <p>
        Furthermore, it is highlighted in a study in 2017 that LDAP excels at managing user identities within vast
the significance of JWTs extends across various sectors. operational environments through centralized
authentiThe research exhibits the versatility of JWT usage in cation mechanisms but setting up can pose significant
multiple contexts such as smart home environments, logistical hurdles especially when confronted by rapidly
thereby accentuating its eficacy specifically with regard changing data sets needing constant adjustments
comto Spring-based applications [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. pared to alternate solutions available. Finally integrating
      </p>
      <p>
        The utilization of OAuth 2.0 in Spring is indispensable Keycloak into microservice architectures enables
simfor ensuring sound authorization measures [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. The pler handling of comprehensive identity access
managepaper scrutinizes the intricacies and methods pertinent ment features significantly simplifying administration
to microservices architecture encompassing OAuth 2.0 needs albeit simultaneously placing additional demands
as a core part thereof. This approach coincides with the on server configuration requirements possibly
introducaid provided by Spring Security’s advanced support for ing performance reduction issues without careful
opOAuth 2.0 protocols aimed at streamlining diverse grant timization attention being given determining efective
types within applications built on this platform. trade-ofs relative required specific infrastructure
capa
      </p>
      <p>
        The well-established function of LDAP in the man- bility constraints.
agement of user authentication and authorization can The cumulative package delivered via incorporation
be further enhanced through its integration with Spring all these methods launched eficiently using Spring
afSecurity by taking into account the principles expounded fords robust overall system protection ensuring
mitigaupon in [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ]. The paper’s elucidation on context-aware tion maximization against detrimental vulnerabilities
authorization within IoT and blockchain domains is arisen from optimal deployment following exhaustive
highly informative for LDAP implementation within com- comprehension fundamental principles defining reliable
plex enterprise environments operating under Spring. secure ecosystem operations governance broadly
applica
      </p>
      <p>
        The integration of Keycloak with Spring Security pro- ble many industry type verticals benefiting handsomely
vides a potent means to manage the authentication and therefrom upon successful implementation completion
authorization process. A recent study [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ] serves as an achieving strategic business objectives intending
busiillustrative example of how combining Keycloak and nesses reaping profitable outcomes thereof gaining
comSpring Security can efectively secure APIs within a petitive advantage over peers not leveraging innovative
microservice-based structure. This study highlights the approaches towards future-proofing their information
eficacy of utilizing Keycloak alongside Spring Security technology systems accordingly
for ensuring resolute application security mechanisms.
      </p>
      <p>
        Finally, the research paper entitled "Exploring the
Utilization of JWT in MQTT" published on arXiv in 2019 Acknowledgment
delves into the versatile application of JWT within MQTT,
a lightweight communication protocol. This study
emphasizes that JWT can be extended to various protocols
and applications, including those developed with Spring
Framework [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ].
      </p>
      <sec id="sec-5-1">
        <title>This paper was supported in part by the Blockchain Tech</title>
        <p>nology Laboratory at Belgrade Metropolitan University,
Belgrade, Serbia and in part by the Ministry of
Education, Science and Technological Development, Republic
of Serbia ref. no. 451-03-47/2023-01/200029.</p>
      </sec>
    </sec>
    <sec id="sec-6">
      <title>7. Conclusion</title>
      <sec id="sec-6-1">
        <title>The Spring Framework encompasses the integration of</title>
        <p>JWT, OAuth 2.0, LDAP and Keycloak for a multi-layered
approach to security, with each component possessing
its own advantages and drawbacks. In particular, JWT
boasts stateless functionality as well as scalability
suitability which renders it fitting for contemporary web
applications; however meticulous monitoring of token security
is critical in order to prevent any potential vulnerability</p>
      </sec>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          [1]
          <string-name>
            <given-names>R.</given-names>
            <surname>Johnson</surname>
          </string-name>
          , J. Hoeller,
          <string-name>
            <given-names>K.</given-names>
            <surname>Donald</surname>
          </string-name>
          ,
          <string-name>
            <given-names>C.</given-names>
            <surname>Sampaleanu</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Harrop</surname>
          </string-name>
          ,
          <string-name>
            <given-names>T.</given-names>
            <surname>Risberg</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Arendsen</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Davison</surname>
          </string-name>
          ,
          <string-name>
            <given-names>D.</given-names>
            <surname>Kopylenko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Pollack</surname>
          </string-name>
          , et al.,
          <article-title>The spring framework-reference documentation</article-title>
          , interface
          <volume>21</volume>
          (
          <year>2004</year>
          )
          <fpage>27</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          [2]
          <string-name>
            <given-names>C.</given-names>
            <surname>Walls</surname>
          </string-name>
          , Spring in action,
          <source>4th edition</source>
          , Manning Publications,
          <year>2013</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          [3]
          <string-name>
            <surname>Snyk</surname>
          </string-name>
          ,
          <source>JVM Ecosystem Report</source>
          <year>2021</year>
          , https://snyk.io/ reports/jvm-ecosystem
          <source>-report-2021/</source>
          ,
          <year>2022</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          [4]
          <string-name>
            <given-names>Ł.</given-names>
            <surname>Wyciślik</surname>
          </string-name>
          , Ł. Latusik,
          <string-name>
            <given-names>A. M.</given-names>
            <surname>Kamińska</surname>
          </string-name>
          ,
          <article-title>A comparative assessment of jvm frameworks to develop microservices</article-title>
          ,
          <source>Applied Sciences</source>
          <volume>13</volume>
          (
          <year>2023</year>
          )
          <fpage>1343</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          [5]
          <string-name>
            <given-names>K.</given-names>
            <surname>Shingala</surname>
          </string-name>
          ,
          <article-title>JSON web token (JWT) based client authentication in message queuing telemetry transport (MQTT)</article-title>
          , arXiv preprint arXiv:
          <year>1903</year>
          .
          <volume>02895</volume>
          (
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          [6]
          <string-name>
            <given-names>S.</given-names>
            <surname>Thorgersen</surname>
          </string-name>
          ,
          <string-name>
            <surname>P. I. Silva</surname>
          </string-name>
          ,
          <article-title>Keycloak-identity and access management for modern applications: harness the power of Keycloak, OpenID Connect, and OAuth 2.0 protocols to secure applications</article-title>
          ,
          <source>Packt Publishing Ltd</source>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          [7]
          <string-name>
            <given-names>M.</given-names>
            <surname>Jones</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Bradley</surname>
          </string-name>
          ,
          <string-name>
            <given-names>N.</given-names>
            <surname>Sakimura</surname>
          </string-name>
          , RFC 7519:
          <article-title>JSON Web Token (JWT</article-title>
          ),
          <year>2015</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          [8]
          <string-name>
            <given-names>M.</given-names>
            <surname>Knutson</surname>
          </string-name>
          ,
          <string-name>
            <given-names>R.</given-names>
            <surname>Winch</surname>
          </string-name>
          , P. Mularien, Spring Security:
          <article-title>Secure your web applications</article-title>
          , RESTful services, and microservice architectures,
          <source>Packt Publishing Ltd</source>
          ,
          <year>2017</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          [9]
          <string-name>
            <given-names>D.</given-names>
            <surname>Hardt</surname>
          </string-name>
          , RFC
          <volume>6749</volume>
          :
          <article-title>The OAuth 2.0 authorization framework</article-title>
          ,
          <year>2012</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          [10]
          <string-name>
            <given-names>M.</given-names>
            <surname>Rouse</surname>
          </string-name>
          ,
          <article-title>Ldap (lightweight directory access protocol), Enterprise Mobile Computing news and information (</article-title>
          <year>2019</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          [11]
          <string-name>
            <given-names>R.</given-names>
            <surname>Hat</surname>
          </string-name>
          ,
          <article-title>Keycloak-open source identity and access management</article-title>
          ,
          <year>2021</year>
          .
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          [12]
          <string-name>
            <given-names>A.</given-names>
            <surname>Bucko</surname>
          </string-name>
          ,
          <string-name>
            <given-names>K.</given-names>
            <surname>Vishi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Krasniqi</surname>
          </string-name>
          ,
          <string-name>
            <given-names>B.</given-names>
            <surname>Rexha</surname>
          </string-name>
          ,
          <article-title>Enhancing jwt authentication and authorization in web applications based on user behavior history</article-title>
          ,
          <source>Computers</source>
          <volume>12</volume>
          (
          <year>2023</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          [13]
          <string-name>
            <given-names>N.</given-names>
            <surname>Hong</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            <surname>Kim</surname>
          </string-name>
          , M.-
          <string-name>
            <given-names>S.</given-names>
            <surname>Jun</surname>
          </string-name>
          ,
          <string-name>
            <given-names>J.</given-names>
            <surname>Kang</surname>
          </string-name>
          ,
          <article-title>A study on a jwt-based user authentication and api assessment scheme using imei in a smart home environment</article-title>
          ,
          <source>Sustainability</source>
          <volume>9</volume>
          (
          <year>2017</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          [14]
          <string-name>
            <surname>M. G. de Almeida</surname>
            ,
            <given-names>E. D.</given-names>
          </string-name>
          <string-name>
            <surname>Canedo</surname>
          </string-name>
          ,
          <article-title>Authentication and authorization in microservices architecture: A systematic literature review</article-title>
          ,
          <source>Applied Sciences</source>
          <volume>12</volume>
          (
          <year>2022</year>
          ).
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          [15]
          <string-name>
            <given-names>T.</given-names>
            <surname>Sylla</surname>
          </string-name>
          ,
          <string-name>
            <given-names>L.</given-names>
            <surname>Mendiboure</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M. A.</given-names>
            <surname>Chalouf</surname>
          </string-name>
          ,
          <string-name>
            <given-names>F.</given-names>
            <surname>Krief</surname>
          </string-name>
          ,
          <article-title>Blockchain-based context-aware authorization management as a service in iot</article-title>
          ,
          <source>Sensors</source>
          <volume>21</volume>
          (
          <year>2021</year>
          )
          <fpage>7656</fpage>
          .
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          [16]
          <string-name>
            <given-names>A.</given-names>
            <surname>Chatterjee</surname>
          </string-name>
          ,
          <string-name>
            <given-names>A.</given-names>
            <surname>Prinz</surname>
          </string-name>
          ,
          <article-title>Applying spring security framework with keycloak-based oauth2 to protect microservice architecture apis: A case study</article-title>
          ,
          <source>Sensors</source>
          <volume>22</volume>
          (
          <year>2022</year>
          )
          <fpage>1703</fpage>
          .
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>