# Getting Started
* Desteklenecek protokoller
* Açık Bankacılık Yönetmeliği
* Outh2
* OpenId
* **Headless** geliştirme yapılacaktır.
* **dapr** üzerinde geliştirme yapılacaktır.
* Tüm hizmetler **REST API** olarak sunulacaktır.
* Kullanıcı arabirimleri ayrı projeler olarak geliştirilecektir.
* Kullanıcı doğrulama yapan arabirimler *Proof Key for Code Exchange (PKCE)* kullanacaktır.
:::warning
Arayüzler tek arayüz olarak Flutter iler yazılabilir mi? Web + Mobile olarak ?
:::
## Temel Bilgiler
### Kullanıcı Tanımları
Sercan; Migrosda kredi verir, Burgan musterisi
* User : Sercan
* Clients: MobileApp, LoanApp, TFS
* Scope: BurganBank
* Role Group (Burgan): Yazilimci, Analist, Release Manager
* Scope: Migros
* Role Group (Loan Dealer): Loan Agent, Loan Approver, CFO
* Scope: Mudo
* Role Group (Loan Dealer)....
* Scope: Sercan Musterisi
* Role Group (Retail) : Read, Admin
* Consent 1: (U)Sercan, (S)Sercan Musterisi, (C)MobileApp, (R)Admin
* Consent 2: (U)Sercan, (S)Migros, (C)LoanAppm, (R)Loan Agent
* Consent 3: (U)Sercan, (S)BurganBank, (C)TFS, (R)Release Manager
(Role)Loan Agent, POST api.burgan.com.tr/loan/{dealer-code}/apply
api.burgan.com.tr/loan/**Migros**/apply OK
api.burgan.com.tr/loan/**Mudo**/apply 403
* User: Ugur
* Consent: (U)Ugur, (S)Mudo, (C) LoanApp, (R) Loan Agent
---
* Client: SokPara
* Consent: (U)Ugur, (S)Ugur Musteri, (C)SokPara, (R)Read
1. Is consent valid ?
2. Role(Read) can access account query ?
3. Is customerNo parameter is available to customer ? YES
(Role)Read, POST api.burgan.com.tr/account/{customerNo}
```plantuml
@startuml
entity Scope {
Müşteri ve kurum
bilgilerinin tutulduğu
temel kümedir
--
+Role Group
}
entity User {
Kaynaklara erişmeye
çalışan tüm hesap
sahiplerini tanımlar.
}
entity Consent {
Kaynaklara erişmek için
kullanıcılara verilmiş
izin/Rıza(Consent) bilgisini
tanımlar
--
+Scope
+User
+Client
+Role
}
Scope ||..|{ Consent
User ||..|{ Consent
@enduml
```
### Kullanıcı Doğrulama
Tanımlı rızaya bağlı olarak kullanıcının alabileceği Tokenlar ve verilen Tokenların session yönetim bilgisini kapsar.
```plantuml
@startuml
entity Client {
Kaynaklara erişmeye
yetkili tüm sistem
ve uygulamaları tanımlar
}
entity Flow {
Kullanıcı doğrulama
akışlarını tanımlar
--
}
entity Token {
Kaynaklara erişmek için
kullanıcılara verilebilecek
Token bilgilerini
tanımlar
--
+Client
}
entity Session {
Verilen Token bilgi
ve durumlarını tanımlar
--
+Token
+Flow
}
Token ||..|{ Session
Client ||..|{ Token
Client ||..|{ Flow
@enduml
```
### Kullanıcı Yetkilendirme
```plantuml
@startuml
entity RoleGroup as "Role Group" {
Kaynaklara erişimi
yönetmek için rolleri
gruplandığı tanımdır
--
*Roles
}
entity Role {
Kaynaklara erişimi
yönetmek için rol
tanımıdır
}
entity Permissions {
Kaynak tanımlarını içerir.
Her API bir permission
olarak tanımlanır.
--
+Role
}
entity Privilege {
API erişimlerinde
kullanıcı özel erişim
kontrol ve filtreleri
tanımlanır.
--
+Permission
}
RoleGroup ||..|{ Role
Role ||..|{ Permissions
Permissions ||..|{ Privilege
@enduml
```
### İşlemler
```plantuml
@startuml
entity Transations {
Ödeme emri, hesap açma
gibi anlık işlem rızaların
tanımlarıdır.
--
+Flow
}
entity Approval {
İşlem rızaları için
tanımlı onay zinciridir.
--
+Permission
}
Transations ||..|{ Approval
@enduml
```
## Project Structure
amorphie.tag
amorphie.workflow
amorphie.scope
amorphie.client
amorphie.user
amorphie.transactions
amorphie.consent
amorphie.flows
amorphie.resource
amorphie.mobile
amorphie.ui.backoffice
amorphie.apisix.modifier
amorphie.apisix.ratelimit
amorphie.psd2.services.tr