apps/docs/content/guides/integrate/login/oidc/login-users.mdx
import AuthMethods from "./_authmethods.mdx";
This guide will show you how to use ZITADEL to login users into your application (authentication). It will guide you step-by-step through the basics and point out on how to customize process.
OAuth and therefore OIDC know three different application types:
Depending on the app type you're trying to register, there are small differences. But regardless of the app type we recommend using Proof Key for Code Exchange (PKCE).
Please read the following guide about the different-client-profiles and why to use PKCE.
For a basic understanding of OAuth and its flows, we'll briefly describe the most important flow: Authorization Code.
The following diagram demonstrates a basic authorization_code flow:
This flow is the same when using PKCE or JWT with Private Key for authentication.
To create an application, open your project in Management Console and start by clicking on the "New" button in the Application section.
This will start a wizard asking you for an application name and a type.
<Tabs groupId="app-type" default="web" values={[ {'label': 'Web Application', 'value': 'web'}, {'label': 'Native Application', 'value': 'native'}, {'label': 'Single Page Application', 'value': 'spa'}, ]}
<Tab value="web">
After selecting WEB, you'll next have to choose an authentication method. As mentioned before we recommend using PKCE. For even better security you could switch to JWT or just rely on the standard Authorization Code Flow. For security reasons we don't recommend using POST and will not cover it in this guide.
Please change the authentication method here as well, if you did so in the wizard, so we can better guide you through the process:
<AuthMethods components={props.components} selected="web" /> </Tab> <Tab value="native">When selecting Native the authentication method always needs to be PKCE.
<AuthMethods components={props.components} selected="native" /> </Tab> <Tab value="spa">When selecting SPA the recommended authentication method is again PKCE. All common Frameworks like Angular, React, Vue.js and so on are able to successfully authenticate with PKCE. Our management console UI for instance uses PKCE as well.
<AuthMethods components={props.components} selected="spa" /> </Tab> </Tabs>