Authorization Code ile yetkilendirilen uygulamalar Confidential Client türündeki yani sunucu taraflı çalışan uygulamalardır. Bu tür uygulamaların Authorization Server tarafından yetkilendirmesi iki aşamada ve dört basamakta gerçekleşir.
- Authorization Request
- Authorization Response
- Token Request
- Token Response
1- Authorization Request
Web uygulaması için gerekli kodu (Authorization Code) elde etmek için Authorization Endpoint’e gönderilen taleptir. Kullanılan parametreler:
- response_type : Zorunlu parametredir. Alacağı değer “code” olmalıdır.
- client_id : Zorunlu parametredir. Authorization Server tarafından önceden verilmiştir.
- redirect_uri : İsteğe bağlı parametredir. İstemci tarafından belirlenir.
- scope : İsteğe bağlı parametredir Talebin kapsamını belirler.
- state : İsteğe bağlı parametredir.
2- Authorization Response
Authorization Request sonucunda Authorization Server tarafından uygulamaya dönen cevaptır. Parametreler:
- code : Zorunlu parametredir. Yetkilendirme kodu.
- state : Request parametresi olarak belirtilmişse cevapta dönmesi zorunludur.
Authorization Error Response
Authorization sırasında bir hata oluşursa iki durum söz konusu olacaktır.
- Kullanıcının yetkilendirilemediği veya tanınmadığı durum. Bu durum geçersiz bir Redirect URI belirlendiğinde veya kullanıcı kimlik bilgileri bilinmediği durumlarda ortaya çıkar.
- Kullanıcı doğrulanır fakat başka bir durumdan dolayı hatanın meydana geldiği durum. Bu gibi durumlarda kullanıcıya dönen cevap şu şekilde olacaktır.
- error : Zorunlu parametredir. Hatanın ne olduğunu belirten mesajdır.
- error_description : Geliştiricilere bilgi veren isteğe bağlı bir parametredir.
- error_uri : Hata hakkında bilgi veren bir web sayfasının adresini veren isteğe bağlı parametredir.
- state : Request sırasında belirlenmiş ise cevapta dönmesi zorunludur.
3- Token Request
Yetkilendirme kodu (Authorization Code) alındıktan sonra uygulama bu kodu access token elde etmek için kullanır. Token elde etmek için token endpoint adresine talepte bulunulur. Access token talebi için parametreler:
- client_id : Zorunlu parametredir. Authorization Server tarafından önceden verilir.
- client_secret : Zorunlu parametredir. Authorization Server tarafından önceden verilir.
- grant_type : Zorunlu parametredir. Alacağı değer “authorization_code” şeklindedir.
- code : Zorunlu parametredir. Authorization Request ile elde edile koddur.
- redirect_uri : Eğer Authorization Request sırasında belirlenmiş ise belirtilmesi gereken zorunlu parametredir.
4-Token Response
JSON formatında access token bilgisini veren cevaptır. Cevap parametreleri:
- access_token : Zorunlu parametredir. Authorization Server tarafından üretilen şifreli bilgidir.
- token_type : Zorunlu parametredir. Authorization Server tarafından belirlenen token türüdür.
- expires_in : İsteğe bağlı parametredir. Access token için belirlenen saniye cinsinden geçerlilik süresidir. Süre bittiğinde token artık geçersizdir.
- refresh_token : Zorunlu parametredir. Access token süresi dolduğunda yeni bir token elde etmek için kullanılacak olan parametredir.