<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Using OpenID Connect with Cozystack on Cozystack</title><link>https://deploy-preview-650--cozystack.netlify.app/docs/next/operations/oidc/</link><description>Recent content in Using OpenID Connect with Cozystack on Cozystack</description><generator>Hugo</generator><language>en</language><atom:link href="https://deploy-preview-650--cozystack.netlify.app/docs/next/operations/oidc/index.xml" rel="self" type="application/rss+xml"/><item><title>Enable OIDC Server</title><link>https://deploy-preview-650--cozystack.netlify.app/docs/next/operations/oidc/enable_oidc/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-650--cozystack.netlify.app/docs/next/operations/oidc/enable_oidc/</guid><description>&lt;h2 id="prerequisites"&gt;Prerequisites&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;OIDC Configuration&lt;/strong&gt;
Your API server must be configured to use OIDC. If you are using Talos Linux, your machine configuration should include the following parameters:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;cluster&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;apiServer&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;extraArgs&lt;/span&gt;:&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;oidc-issuer-url&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;https://keycloak.example.org/realms/cozy&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;oidc-client-id&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;kubernetes&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;oidc-username-claim&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;preferred_username&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;oidc-groups-claim&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;groups&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;For Talm&lt;/strong&gt;
Add to your &lt;code&gt;values.yaml&lt;/code&gt; in talm repo:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-yaml" data-lang="yaml"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#062873;font-weight:bold"&gt;oidcIssuerUrl&lt;/span&gt;:&lt;span style="color:#bbb"&gt; &lt;/span&gt;&lt;span style="color:#4070a0"&gt;&amp;#34;https://keycloak.&amp;lt;YOUR_ROOT_DOMAIN&amp;gt;/realms/cozy&amp;#34;&lt;/span&gt;&lt;span style="color:#bbb"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Domain Reachability&lt;/strong&gt;
Ensure that the domain &lt;code&gt;keycloak.example.org&lt;/code&gt; is accessible from the cluster and resolves to your root ingress controller.&lt;/p&gt;</description></item><item><title>Creating users and add roles for them</title><link>https://deploy-preview-650--cozystack.netlify.app/docs/next/operations/oidc/users_and_roles/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-650--cozystack.netlify.app/docs/next/operations/oidc/users_and_roles/</guid><description>&lt;p&gt;Creating users and add roles for them&lt;/p&gt;
&lt;h3 id="overview"&gt;Overview&lt;/h3&gt;
&lt;p&gt;When a tenant is created in Cozy (starting with version 1.6.0), roles, RoleBindings and keycloak groups will automatically be created in the Kubernetes cluster.&lt;/p&gt;
&lt;p&gt;To create a user, refer to the following documentation:

&lt;a href="https://www.keycloak.org/docs/latest/server_admin/#using-the-admin-console" target="_blank"&gt;Keycloak Admin Console Documentation&lt;/a&gt;&lt;/p&gt;
&lt;h2 id="assigning-a-role-to-a-user-for-a-tenant"&gt;Assigning a Role to a User for a Tenant&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Access Keycloak&lt;/strong&gt;:
To retrieve login credentials, check the secret by running the following command:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="background-color:#f0f0f0;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;kubectl get secret keycloak-credentials -n cozy-keycloak -o yaml
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;Keycloak Address&lt;/strong&gt;:
The Keycloak address will match the &lt;code&gt;publishing.host&lt;/code&gt; value specified in your Platform Package. For example, if your Package includes:&lt;/p&gt;</description></item><item><title>Private CA and Let's Encrypt Staging</title><link>https://deploy-preview-650--cozystack.netlify.app/docs/next/operations/oidc/self-signed-certificates/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deploy-preview-650--cozystack.netlify.app/docs/next/operations/oidc/self-signed-certificates/</guid><description>&lt;p&gt;This guide explains how to serve Keycloak with a certificate that is not publicly trusted and how to establish trust in every OIDC client. It covers private certificate authorities (CAs), Let&amp;rsquo;s Encrypt staging, wildcard certificates, Talos, the Kubernetes API server, browsers, and kubelogin.&lt;/p&gt;
&lt;h2 id="choose-a-certificate-source"&gt;Choose a certificate source&lt;/h2&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Source&lt;/th&gt;
					&lt;th&gt;Recommended use&lt;/th&gt;
					&lt;th&gt;Publicly trusted&lt;/th&gt;
					&lt;th&gt;Notes&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;Let&amp;rsquo;s Encrypt production&lt;/td&gt;
					&lt;td&gt;Production&lt;/td&gt;
					&lt;td&gt;Yes&lt;/td&gt;
					&lt;td&gt;Subject to production rate limits. Prefer a DNS-01 wildcard when many endpoints share a domain.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Let&amp;rsquo;s Encrypt staging&lt;/td&gt;
					&lt;td&gt;Ephemeral and development clusters&lt;/td&gt;
					&lt;td&gt;No&lt;/td&gt;
					&lt;td&gt;Uses separate accounts and much higher limits than production. Trust staging roots only in isolated development clients.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Private CA&lt;/td&gt;
					&lt;td&gt;Air-gapped and corporate environments&lt;/td&gt;
					&lt;td&gt;No&lt;/td&gt;
					&lt;td&gt;Distribute the CA certificate to every trust boundary. Keep the CA stable and rotate leaf certificates beneath it.&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Direct self-signed leaf&lt;/td&gt;
					&lt;td&gt;Temporary diagnostics only&lt;/td&gt;
					&lt;td&gt;No&lt;/td&gt;
					&lt;td&gt;Every leaf replacement changes the trust anchor. Use a self-signed issuer to bootstrap a CA instead.&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Let&amp;rsquo;s Encrypt explicitly warns against adding its staging roots to a trust store used for ordinary browsing because the staging hierarchy is not audited to production standards. A dedicated browser profile, disposable VM, or isolated development workstation avoids extending that trust to unrelated browsing. See the 
&lt;a href="https://letsencrypt.org/docs/staging-environment/" target="_blank"&gt;Let&amp;rsquo;s Encrypt staging environment&lt;/a&gt; for the current staging root certificates and limits.&lt;/p&gt;</description></item></channel></rss>