OAuth2 Knihovny a SDK
Doporučené knihovny pro integraci OAuth2 autentizace kdo.je do vaší aplikace
Úvod
kdo.je OAuth 2.0 server je kompatibilní se standardními OAuth 2.0 a OpenID Connect knihovnami. Na této stránce naleznete doporučené knihovny pro různé platformy a jazyky, které zjednoduší implementaci OAuth autentizace ve vaší aplikaci.
client_id (a případně client_secret).
Podrobný popis OAuth flow naleznete v OAuth2 dokumentaci.
Frontend (JavaScript/TypeScript)
Pro single-page aplikace (SPA), mobilní webové aplikace a frontend autentizaci.
oidc-client-ts Doporučeno
github.com/authts/oidc-client-ts
Moderní TypeScript knihovna pro OpenID Connect a OAuth2 autentizaci. Oficiální nástupce
oidc-client-js s lepší podporou TypeScript a moderními funkcemi.
Výhody:
- Plná podpora TypeScript
- Automatická podpora PKCE (doporučeno pro public clients)
- Funguje i bez discovery endpointu (manuální konfigurace)
- Podpora Silent Refresh (automatické obnovení tokenů)
- Aktivní vývoj a komunita
- Framework agnostic (React, Vue, Angular, vanilla JS)
Instalace:
npm install oidc-client-ts
Použití:
import { UserManager } from 'oidc-client-ts';
const userManager = new UserManager({
authority: 'https://www.kdo.je',
client_id: 'your-client-id',
redirect_uri: 'https://yourapp.com/callback',
response_type: 'code',
scope: 'openid profile email',
automaticSilentRenew: true,
// Protože kdo.je nemá discovery endpoint, použijte manuální konfiguraci:
metadata: {
authorization_endpoint: 'https://www.kdo.je/oauth/authorize',
token_endpoint: 'https://www.kdo.je/oauth/token',
userinfo_endpoint: 'https://www.kdo.je/oauth/userinfo',
revocation_endpoint: 'https://www.kdo.je/oauth/revoke'
}
});
// Zahájit přihlášení
await userManager.signinRedirect();
// Zpracovat callback
const user = await userManager.signinRedirectCallback();
// Získat access token
const currentUser = await userManager.getUser();
const accessToken = currentUser?.access_token;
Doporučeno pro:
- React, Vue, Angular SPA aplikace
- TypeScript projekty
- Public clients (bez server-side komponenty)
@auth0/auth0-spa-js
Knihovna od Auth0 pro single-page aplikace. Přestože je od Auth0, funguje s jakýmkoliv OAuth2 serverem včetně kdo.je.
Výhody:
- Jednoduchá API a konfigurace
- Skvělá dokumentace a příklady
- Optimalizováno pro SPA aplikace
- Automatické PKCE
- Token caching a refresh
Instalace:
npm install @auth0/auth0-spa-js
Doporučeno pro:
- Single-page aplikace s jednoduchou konfigurací
- Projekty preferující Auth0 ekosystém
AppAuth-JS
Oficiální JavaScript SDK od OpenID Foundation. Implementace OAuth 2.0 a OpenID Connect best practices.
Výhody:
- Oficiální implementace od OpenID Foundation
- Striktní dodržování RFC standardů
- Podpora PKCE
- Podpora mobilních aplikací (React Native, Cordova)
Instalace:
npm install @openid/appauth
Doporučeno pro:
- Mobilní aplikace (React Native, Cordova)
- Projekty vyžadující striktní RFC compliance
Backend (.NET/C#)
Pro server-side aplikace, ASP.NET Core webové aplikace a API.
Microsoft.AspNetCore.Authentication.OpenIdConnect Doporučeno
Oficiální Microsoft knihovna pro OpenID Connect autentizaci v ASP.NET Core aplikacích. Perfektní integrace s ASP.NET Core autentizačním systémem.
Výhody:
- Oficiální Microsoft balíček
- Nativní integrace s ASP.NET Core
- Automatická správa cookie session
- Podpora PKCE, refresh tokenů
- Funguje s jakýmkoliv OIDC serverem
- Skvělá dokumentace
Instalace:
dotnet add package Microsoft.AspNetCore.Authentication.OpenIdConnect
Konfigurace v Program.cs:
builder.Services.AddAuthentication(options =>
{
options.DefaultScheme = "Cookies";
options.DefaultChallengeScheme = "oidc";
})
.AddCookie("Cookies")
.AddOpenIdConnect("oidc", options =>
{
options.Authority = "https://www.kdo.je";
options.ClientId = "your-client-id";
options.ClientSecret = "your-client-secret";
options.ResponseType = "code";
options.UsePkce = true;
options.SaveTokens = true;
options.GetClaimsFromUserInfoEndpoint = true;
options.Scope.Add("openid");
options.Scope.Add("profile");
options.Scope.Add("email");
// kdo.je nemá discovery endpoint, použijte manuální konfiguraci:
options.RequireHttpsMetadata = true;
options.MetadataAddress = null; // zakázat auto-discovery
options.Configuration = new OpenIdConnectConfiguration
{
AuthorizationEndpoint = "https://www.kdo.je/oauth/authorize",
TokenEndpoint = "https://www.kdo.je/oauth/token",
UserInfoEndpoint = "https://www.kdo.je/oauth/userinfo"
};
});
// Middleware
app.UseAuthentication();
app.UseAuthorization();
Použití v Razor Pages:
// Pages/Login.cshtml.cs
public class LoginModel : PageModel
{
public IActionResult OnGet()
{
return Challenge(new AuthenticationProperties
{
RedirectUri = "/"
}, "oidc");
}
}
// Získání přihlášeného uživatele
var userName = User.Identity?.Name;
var email = User.FindFirst("email")?.Value;
Doporučeno pro:
- ASP.NET Core webové aplikace (Razor Pages, MVC)
- Confidential clients (aplikace s backend serverem)
- Aplikace vyžadující cookie-based autentizaci
IdentityModel
Low-level OAuth 2.0 a OpenID Connect klientská knihovna. Ideální pro API-to-API komunikaci, machine-to-machine autentizaci a pokročilé scénáře.
Výhody:
- Flexibilní low-level API
- Podpora discovery dokumentu
- Token introspection a revocation
- Client credentials flow
- Device authorization flow
- PKCE support
Instalace:
dotnet add package IdentityModel
Příklad - Token request:
using IdentityModel.Client;
var client = new HttpClient();
// Token request
var tokenResponse = await client.RequestAuthorizationCodeTokenAsync(new AuthorizationCodeTokenRequest
{
Address = "https://www.kdo.je/oauth/token",
ClientId = "your-client-id",
ClientSecret = "your-client-secret",
Code = authorizationCode,
RedirectUri = "https://yourapp.com/callback",
CodeVerifier = codeVerifier // pro PKCE
});
if (!tokenResponse.IsError)
{
var accessToken = tokenResponse.AccessToken;
var refreshToken = tokenResponse.RefreshToken;
}
Příklad - UserInfo request:
var userInfoResponse = await client.GetUserInfoAsync(new UserInfoRequest
{
Address = "https://www.kdo.je/oauth/userinfo",
Token = accessToken
});
var userName = userInfoResponse.Claims.FirstOrDefault(c => c.Type == "name")?.Value;
Doporučeno pro:
- API-to-API autentizace
- Background services a daemon aplikace
- Pokročilé OAuth scénáře
- Client credentials flow
- Projekty vyžadující granulární kontrolu nad OAuth flow
Příklady konfigurace
React (s oidc-client-ts)
// AuthProvider.tsx
import { UserManager, WebStorageStateStore } from 'oidc-client-ts';
const oidcConfig = {
authority: 'https://www.kdo.je',
client_id: 'your-react-app-client-id',
redirect_uri: window.location.origin + '/callback',
post_logout_redirect_uri: window.location.origin,
response_type: 'code',
scope: 'openid profile email',
automaticSilentRenew: true,
userStore: new WebStorageStateStore({ store: window.localStorage }),
metadata: {
authorization_endpoint: 'https://www.kdo.je/oauth/authorize',
token_endpoint: 'https://www.kdo.je/oauth/token',
userinfo_endpoint: 'https://www.kdo.je/oauth/userinfo',
revocation_endpoint: 'https://www.kdo.je/oauth/revoke'
}
};
export const userManager = new UserManager(oidcConfig);
ASP.NET Core API (Bearer token autentizace)
// Pro API, které přijímá JWT tokeny od kdo.je
builder.Services.AddAuthentication("Bearer")
.AddJwtBearer("Bearer", options =>
{
options.Authority = "https://www.kdo.je";
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateAudience = true,
ValidAudience = "https://www.kdo.je",
ValidateIssuer = true,
ValidIssuer = "https://www.kdo.je",
ValidateLifetime = true
};
});
Discovery Endpoint
/.well-known/openid-configuration. Knihovny mohou automaticky zjistit
všechny potřebné endpointy a konfigurace je tak mnohem jednodušší!
Dostupné Discovery endpointy:
GET https://www.kdo.je/.well-known/openid-configuration- OpenID Connect Discovery DocumentGET https://www.kdo.je/.well-known/jwks.json- JSON Web Key Set s veřejnými RSA klíči pro RS256
Použití s automatickým discovery:
// Konfigurace S discovery endpointem (FUNGUJE!):
const userManager = new UserManager({
authority: 'https://www.kdo.je', // automaticky načte /.well-known/openid-configuration
client_id: 'your-client-id',
redirect_uri: 'https://yourapp.com/callback',
response_type: 'code',
scope: 'openid profile email'
// metadata sekce už není potřeba! ✅
});
metadata), pokud preferujete větší kontrolu
nad konfigurací.
Příklad ASP.NET Core s automatickým discovery:
// Automatické načtení konfigurace z discovery endpointu
builder.Services.AddAuthentication("Bearer")
.AddJwtBearer("Bearer", options =>
{
options.Authority = "https://www.kdo.je";
options.RequireHttpsMetadata = true;
// Automaticky načte JWKS z /.well-known/jwks.json
options.TokenValidationParameters = new TokenValidationParameters
{
ValidateIssuer = true,
ValidateAudience = true,
ValidateLifetime = true
};
});
Další zdroje
Dokumentace:
- OAuth2 Dokumentace - podrobný popis OAuth flow a endpointů
- Moje OAuth aplikace - správa vašich aplikací a získání client_id
- Autorizované aplikace - správa oprávnění
Pokud máte jakékoli dotazy nebo problémy s integrací, kontaktujte nás na support@kdoje.cz