# 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