KeyCloakは、オープンソースの認証・認可プラットフォームで、シングルサインオン(SSO)やOpenID Connect、OAuth2.0のプロトコルに対応している。ここでは、KeyCloakを**.NET APIサーバ**の認証サーバとして組み込む方法を簡単に説明する。
KeyCloakを利用することで、SSO(シングルサインオン)が容易に実現でき、複数のアプリケーションやサービス間で一度のログインでアクセスを許可できる。また、OAuth2.0やOpenID Connectに対応しており、セキュアな認証を手軽に導入できる。
docker run -d -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin jboss/keycloak
POST /auth/realms/{realm}/protocol/openid-connect/token
client_id
、client_secret
、username
、password
などの情報を送る。curl -X POST "http://localhost:8080/auth/realms/myrealm/protocol/openid-connect/token" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "grant_type=password&client_id=myclient&client_secret=mysecret&username=myuser&password=mypassword"
{ "access_token": "eyJhbGciOiJIUzI1NiIsIn...", "expires_in": 300, "token_type": "Bearer", "scope": "openid profile" }
GET /api/secure-data Authorization: Bearer eyJhbGciOiJIUzI1NiIsIn...
var handler = new JwtSecurityTokenHandler(); var jwtToken = handler.ReadJwtToken(accessToken); var issuer = jwtToken.Issuer; // 発行元の取得
GET /auth/realms/{realm}/protocol/openid-connect/certs
var validationParameters = new TokenValidationParameters { ValidIssuer = "http://localhost:8080/auth/realms/myrealm", IssuerSigningKey = new SymmetricSecurityKey(publicKey) }; var principal = handler.ValidateToken(accessToken, validationParameters, out var validatedToken);
KeyCloakを.NET APIに組み込むことで、OAuth2.0やOpenID Connectを利用したセキュアな認証・認可が簡単に導入できる。特にSSOの実現やJWTを使ったトークンベースの認証は、複数のアプリケーションで共通の認証基盤を構築するために非常に有用である。KeyCloakの設定とAPIサーバの組み込みは比較的シンプルな手順であり、セキュリティを向上させるだけでなく、開発の効率化にも貢献する。