Bu projede business servislerimizi koruyan bir mekanizma geliştirmeyi amaçladık. Kütüphane olarak OpenIddict tercih ettik.
Bu proje servislerimizi kullanacak client'i ve servislerimizi koruyacak tokenın üretilmesi için geliştirilmiştir.
- Endpointler
/client
[POST]-> ClientId, ClientSecret, DisplayName alanlarıyla bir post isteği atarak bir client oluşturuyoruz
Örnek Model-> {"ClientId": "employee-service","ClientSecret": "P0NCxuJCtvYo2CI1S7hfZRwKr5beSHTX","DisplayName ": "Employee Service"}
/auth/token"
[POST]-> client_id, client_secret, grant_type, scope alanlarıyla "application/x-www-form-urlencoded" formatında bir post isteği atarak bir token oluşturuyoruz. Örnek Model-> {"client_id": "employee-service", "client_secret": "P0NCxuJCtvYo2CI1S7hfZRwKr5beSHTX", "grant_type": "client_credentials", "scope":"read write delete"}
Bu proje business kodlarımızı gerçekleştirmek üzere geliştirilmiştir.
- Endpointler
Tüm endpointler için Headerda 'Bearer {token}' şeklinde token bilgisi gerekmektedir.
/api/employee/{id}
[GET] -> Çalışan bilgilerimizi getirir.
/api/employee"
[POST]-> Çalışanımızı kaydediyoruz. Örnek Model-> {"name": "Mert", "surname": "Savaş", "age": 25}
/api/employee"
[PUT]-> Çalışanımızın bilgilerini güncelliyoruz. Örnek Model-> Örnek Model-> {"id":1, "name": "Mert", "surname": "Savaş", "age": 24}
/api/employee/{id}"
[DELETE]-> Çalışanımızı siliyoruz.
Token ile güvenliği geçtikten sonra servislerimizi bu tokenın içindeki claimslerde yer alan policy bilgileri ile korumaya çalıştık. Bu policiyler read, write, delete olmak üzere 3 adettir. Token üretilirken bu policy claimleri belirtilmektedir. Eğer client yaratılırken scope olarak delete almamışsa daha sonra delete işlemi yapamaz.