Auth OIDC
Auth hizmeti, Solidus merkeziyetsiz kimlikleri tarafından desteklenen bir OpenID Connect (OIDC) sağlayıcısıdır. Uygulamalar, kullanıcıların kimliğini doğrulamak için standart OIDC akışlarını kullanır ve DID tabanlı özne tanımlayıcılarına sahip JWT token’ları alır.
Temel URL: https://auth.solidus.network
Keşif
OpenID Yapılandırması
Desteklenen tüm uç noktaları ve özellikleri içeren OIDC Keşif belgesini döndürür.
GET /.well-known/openid-configuration
Kimlik doğrulama: Yok
curl https://auth.solidus.network/.well-known/openid-configuration// Response 200
{
"issuer": "https://auth.solidus.network",
"authorization_endpoint": "https://auth.solidus.network/authorize",
"token_endpoint": "https://auth.solidus.network/token",
"userinfo_endpoint": "https://auth.solidus.network/userinfo",
"introspection_endpoint": "https://auth.solidus.network/introspect",
"revocation_endpoint": "https://auth.solidus.network/revoke",
"jwks_uri": "https://auth.solidus.network/.well-known/jwks.json",
"scopes_supported": ["openid", "profile", "email", "did"],
"response_types_supported": ["code"],
"grant_types_supported": ["authorization_code", "refresh_token"],
"subject_types_supported": ["public"],
"id_token_signing_alg_values_supported": ["EdDSA"],
"code_challenge_methods_supported": ["S256"],
"token_endpoint_auth_methods_supported": ["client_secret_post", "client_secret_basic"]
}JSON Web Anahtar Kümesi
ID token’larını doğrulamak için kullanılan açık anahtarları döndürür. Solidus, token imzalama için EdDSA (Ed25519) kullanır.
GET /.well-known/jwks.json
Kimlik doğrulama: Yok
// Response 200
{
"keys": [
{
"kty": "OKP",
"crv": "Ed25519",
"x": "7Hk3mRtQZvXp2nBw9Lj4KxYm8...",
"kid": "solidus-auth-key-1",
"use": "sig",
"alg": "EdDSA"
}
]
}Yetkilendirme
Yetkilendir
Bir yetkilendirme kodu akışı başlatın. Kullanıcının tarayıcısını bu uç noktaya yönlendirin. Kullanıcı
kimlik doğrulamasından ve onayından sonra (veya birinci taraf uygulamalar için otomatik onaydan
sonra), redirect_uri’nize bir yetkilendirme koduyla birlikte geri yönlendirilirler.
GET /authorize
Kimlik doğrulama: Yok (tarayıcı yönlendirmesi)
| Query Param | Type | Required | Description |
|---|---|---|---|
response_type | string | Evet | code olmalıdır |
client_id | string | Evet | Kayıtlı istemci kimliğiniz |
redirect_uri | string | Evet | Yetkilendirmeden sonra yönlendirilecek URL |
scope | string | Evet | Boşlukla ayrılmış kapsamlar: openid, profile, email, did |
state | string | Evet | CSRF koruması için opak (opaque) değer |
nonce | string | Hayır | Yeniden oynatma koruması için ID token’a dahil edilen değer |
code_challenge | string | Evet | PKCE meydan okuması (kod doğrulayıcının Base64URL kodlanmış SHA-256’sı) |
code_challenge_method | string | Evet | S256 olmalıdır |
GET https://auth.solidus.network/authorize?
response_type=code&
client_id=solidus-identity&
redirect_uri=https://identity.solidus.network/auth/callback&
scope=openid profile email did&
state=abc123xyz&
nonce=n-0S6_WzA2Mj&
code_challenge=E9Melhoa2OwvFrEMTJguCHaoeK1t8URWbuGJSstw-cM&
code_challenge_method=S256Başarılı yönlendirme:
https://identity.solidus.network/auth/callback?code=auth_code_7Hk3mRtQ&state=abc123xyzHata yönlendirmesi:
https://identity.solidus.network/auth/callback?error=access_denied&error_description=User+denied+consent&state=abc123xyzBirinci Taraf Otomatik Onay
Kayıtlı birinci taraf istemciler onay ekranını atlar. Kullanıcı kimlik doğrulamasından geçer ve bir yetkilendirme koduyla hemen yönlendirilir. Şu anki birinci taraf istemciler:
| Client ID | Application |
|---|---|
solidus-identity | Kimlik cüzdanı |
solidus-verify | Verify kontrol paneli |
Üçüncü taraf istemciler, kullanıcının istenen kapsamları onayladığı bir onay ekranı gösterir.
Token Değişimi
Yetkilendirme Kodunu Değiştir
Bir yetkilendirme kodunu token’larla değiştirin.
POST /token
Kimlik doğrulama: Yok (istemci, gövde veya Basic auth üzerinden kimlik doğrular)
İçerik Türü: application/x-www-form-urlencoded
curl -X POST https://auth.solidus.network/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=authorization_code" \
-d "code=auth_code_7Hk3mRtQ" \
-d "client_id=solidus-identity" \
-d "client_secret=cs_live_abc123def456..." \
-d "redirect_uri=https://identity.solidus.network/auth/callback" \
-d "code_verifier=dBjftJeZ4CVP-mB92K27uhbUJU1p1r_wW1gFWFOEjXk"| Field | Type | Required | Description |
|---|---|---|---|
grant_type | string | Evet | authorization_code olmalıdır |
code | string | Evet | Yönlendirmeden gelen yetkilendirme kodu |
client_id | string | Evet | Kayıtlı istemci kimliğiniz |
client_secret | string | Evet | İstemci sırrınız |
redirect_uri | string | Evet | Yetkilendirme isteğindeki yönlendirme URL’siyle eşleşmelidir |
code_verifier | string | Evet | PKCE kod doğrulayıcı (orijinal rastgele dize) |
// Response 200
{
"access_token": "eyJhbGciOiJFZERTQSIsInR5cCI6ImF0K2p3dCJ9...",
"id_token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "rt_7Hk3mRtQZvXp2nBw9Lj4K..."
}Token’ı Yenile
Bir yenileme token’ını yeni bir erişim token’ıyla değiştirin.
POST /token
İçerik Türü: application/x-www-form-urlencoded
curl -X POST https://auth.solidus.network/token \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "grant_type=refresh_token" \
-d "refresh_token=rt_7Hk3mRtQZvXp2nBw9Lj4K..." \
-d "client_id=solidus-identity" \
-d "client_secret=cs_live_abc123def456..."| Field | Type | Required | Description |
|---|---|---|---|
grant_type | string | Evet | refresh_token olmalıdır |
refresh_token | string | Evet | Önceki bir token değişiminden gelen yenileme token’ı |
client_id | string | Evet | Kayıtlı istemci kimliğiniz |
client_secret | string | Evet | İstemci sırrınız |
// Response 200
{
"access_token": "eyJhbGciOiJFZERTQSIsInR5cCI6ImF0K2p3dCJ9...",
"id_token": "eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9...",
"token_type": "Bearer",
"expires_in": 3600,
"refresh_token": "rt_9Xm4pLkWnR2nBw9Lj4K..."
}Kullanıcı Bilgisi
Kullanıcı Bilgisini Al
Kimlik doğrulaması yapılmış kullanıcı hakkındaki iddiaları alın.
GET /userinfo
Kimlik doğrulama: Bearer token (erişim token’ı)
curl https://auth.solidus.network/userinfo \
-H "Authorization: Bearer eyJhbGciOiJFZERTQSIs..."// Response 200
{
"sub": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K",
"name": "John Doe",
"email": "[email protected]",
"email_verified": true,
"did": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K",
"updated_at": 1746619200
}sub iddiası her zaman kullanıcının DID’idir. Ek iddialar, yetkilendirme sırasında istenen
kapsamlara bağlıdır:
| Scope | Claims |
|---|---|
openid | sub |
profile | name, updated_at |
email | email, email_verified |
did | did |
Token İç Gözlemi (Introspection)
Token’ı İncele
Bir erişim token’ının veya yenileme token’ının etkin olup olmadığını kontrol edin ve meta verilerini alın.
POST /introspect
Kimlik doğrulama: İstemci kimlik bilgileri (gövde veya Basic auth üzerinden)
İçerik Türü: application/x-www-form-urlencoded
curl -X POST https://auth.solidus.network/introspect \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "token=eyJhbGciOiJFZERTQSIs..." \
-d "client_id=solidus-identity" \
-d "client_secret=cs_live_abc123def456..."// Response 200 — active token
{
"active": true,
"sub": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K",
"client_id": "solidus-identity",
"scope": "openid profile email did",
"token_type": "Bearer",
"exp": 1746622800,
"iat": 1746619200,
"iss": "https://auth.solidus.network"
}// Response 200 — inactive token
{
"active": false
}Token İptali
Token’ı İptal Et
Bir erişim token’ını veya yenileme token’ını iptal edin. Bir yenileme token’ını iptal etmek, ondan düzenlenmiş tüm erişim token’larını da geçersiz kılar.
POST /revoke
Kimlik doğrulama: İstemci kimlik bilgileri (gövde veya Basic auth üzerinden)
İçerik Türü: application/x-www-form-urlencoded
curl -X POST https://auth.solidus.network/revoke \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "token=rt_7Hk3mRtQZvXp2nBw9Lj4K..." \
-d "client_id=solidus-identity" \
-d "client_secret=cs_live_abc123def456..."// Response 200
{
"message": "Token revoked"
}Uç nokta, token zaten iptal edilmiş veya geçersiz olsa bile, RFC 7009 uyarınca her zaman 200 döndürür.
ID Token Yapısı
ID token’ları EdDSA (Ed25519) ile imzalanır ve standart OIDC iddialarının yanı sıra Solidus’a özgü iddiaları da içerir.
// Decoded ID token payload
{
"iss": "https://auth.solidus.network",
"sub": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K",
"aud": "solidus-identity",
"exp": 1746622800,
"iat": 1746619200,
"nonce": "n-0S6_WzA2Mj",
"name": "John Doe",
"email": "[email protected]",
"email_verified": true,
"did": "did:solidus:testnet:7Hk3mRtQZvXp2nBw9Lj4K"
}ID token’larını JWKS uç noktasından gelen açık anahtarları kullanarak doğrulayın. alg başlığı her
zaman EdDSA’dır ve kid başlığı hangi anahtarın kullanıldığını tanımlar.