<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Webbies</title>
    <description>The latest articles on DEV Community by Webbies (@webbies).</description>
    <link>https://dev.to/webbies</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F2882165%2F12667327-bf71-492f-b231-576b498b2f96.png</url>
      <title>DEV Community: Webbies</title>
      <link>https://dev.to/webbies</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/webbies"/>
    <language>en</language>
    <item>
      <title>Getting Started with Keycloak: Running Your First Instance</title>
      <dc:creator>Webbies</dc:creator>
      <pubDate>Wed, 19 Feb 2025 06:35:20 +0000</pubDate>
      <link>https://dev.to/webbies/getting-started-with-keycloak-running-your-first-instance-18fd</link>
      <guid>https://dev.to/webbies/getting-started-with-keycloak-running-your-first-instance-18fd</guid>
      <description>&lt;p&gt;As developers, we often face the challenge of implementing secure authentication and authorization in our applications. Keycloak is an open-source Identity and Access Management solution that can significantly simplify this process. In this first part of our three-part series, we'll set up a Keycloak instance using Docker.&lt;br&gt;
Prerequisites&lt;/p&gt;

&lt;p&gt;Docker installed on your machine&lt;br&gt;
Basic understanding of authentication concepts&lt;br&gt;
Terminal/Command Prompt access&lt;/p&gt;

&lt;p&gt;Setting Up Keycloak with Docker&lt;/p&gt;

&lt;p&gt;First, let's create a docker-compose.yml file:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight yaml"&gt;&lt;code&gt;&lt;span class="na"&gt;version&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s1"&gt;'&lt;/span&gt;&lt;span class="s"&gt;3'&lt;/span&gt;
&lt;span class="na"&gt;services&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
  &lt;span class="na"&gt;keycloak&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
    &lt;span class="na"&gt;image&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt; &lt;span class="s"&gt;quay.io/keycloak/keycloak:22.0.1&lt;/span&gt;
    &lt;span class="na"&gt;environment&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;KEYCLOAK_ADMIN=admin&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;KEYCLOAK_ADMIN_PASSWORD=admin&lt;/span&gt;
    &lt;span class="na"&gt;ports&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="s"&gt;8080:8080"&lt;/span&gt;
    &lt;span class="na"&gt;command&lt;/span&gt;&lt;span class="pi"&gt;:&lt;/span&gt;
      &lt;span class="pi"&gt;-&lt;/span&gt; &lt;span class="s"&gt;start-dev&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Start the container:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;docker-compose up -d&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Your Keycloak instance will be available at &lt;code&gt;http://localhost:8080&lt;/code&gt;.&lt;br&gt;
Configuring Keycloak&lt;/p&gt;

&lt;p&gt;Navigate to &lt;code&gt;http://localhost:8080/admin&lt;/code&gt; and log in with:&lt;/p&gt;

&lt;p&gt;Username: &lt;code&gt;admin&lt;/code&gt;&lt;br&gt;
Password: &lt;code&gt;admin&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Create a new realm:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Click &lt;code&gt;Create Realm&lt;/code&gt;&lt;br&gt;
Name it &lt;code&gt;demo-realm&lt;/code&gt;&lt;br&gt;
Click &lt;code&gt;Create&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Create a client for our applications:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Go to &lt;code&gt;Clients&lt;/code&gt; → &lt;code&gt;Create client&lt;/code&gt;&lt;br&gt;
Client ID: &lt;code&gt;demo-app&lt;/code&gt;&lt;br&gt;
Client Protocol: &lt;code&gt;openid-connect&lt;/code&gt;&lt;br&gt;
Click &lt;code&gt;Next&lt;/code&gt;&lt;br&gt;
Enable &lt;code&gt;Client authentication&lt;/code&gt;&lt;br&gt;
Click &lt;code&gt;Save&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Configure the client:&lt;/p&gt;

&lt;p&gt;Valid redirect URIs:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;http://localhost:8081/* (for Spring Boot)&lt;br&gt;
http://localhost:4200/* (for Angular)&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;Web Origins:&lt;/p&gt;

&lt;p&gt;&lt;code&gt;http://localhost:8081&lt;br&gt;
http://localhost:4200&lt;/code&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Click &lt;code&gt;Save&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Create a test user:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Go to &lt;code&gt;Users&lt;/code&gt; → &lt;code&gt;Add user&lt;/code&gt;&lt;br&gt;
Username: &lt;code&gt;testuser&lt;/code&gt;&lt;br&gt;
Email: &lt;code&gt;testuser@example.com&lt;/code&gt;&lt;br&gt;
Click &lt;code&gt;Create&lt;/code&gt;&lt;br&gt;
Go to &lt;code&gt;Credentials&lt;/code&gt; tab&lt;br&gt;
Set password: &lt;code&gt;password123&lt;/code&gt;&lt;br&gt;
Disable &lt;code&gt;Temporary&lt;/code&gt;&lt;br&gt;
Click &lt;code&gt;Set Password&lt;/code&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Important Configuration Values&lt;br&gt;
Save these values for the next parts:&lt;br&gt;
plaintextCopyRealm: &lt;code&gt;demo-realm&lt;/code&gt;&lt;br&gt;
Client ID: &lt;code&gt;demo-app&lt;/code&gt;&lt;br&gt;
Client Secret: (find in Clients → demo-app → Credentials tab)&lt;br&gt;
Auth URL: &lt;code&gt;http://localhost:8080/realms/demo-realm&lt;/code&gt;&lt;br&gt;
Testing the Setup&lt;/p&gt;

&lt;p&gt;Visit &lt;code&gt;http://localhost:8080/realms/demo-realm/.well-known/openid-configuration&lt;/code&gt;&lt;br&gt;
You should see a JSON document with endpoint configurations&lt;/p&gt;

&lt;p&gt;In the next part, we'll integrate this Keycloak instance with a Spring Boot application.&lt;br&gt;
&lt;strong&gt;&lt;em&gt;Stay tuned for Part 2: Integrating Keycloak with Spring Boot!&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

</description>
      <category>keycloak</category>
      <category>docker</category>
      <category>springboot</category>
      <category>angular</category>
    </item>
  </channel>
</rss>
