Upgrade to Pro — share decks privately, control downloads, hide ads and more …

.NET Day 2026 How Banks Protect Their Applicati...

Avatar for .NET Day .NET Day
August 31, 2026

.NET Day 2026 How Banks Protect Their Applications with FAPI

Avatar for .NET Day

.NET Day

August 31, 2026

More Decks by .NET Day

Other Decks in Technology

Transcript

  1. How Banks Protect Their Apps with FAPI 2.0 Roland Guijt

    Duende Software | Microsoft MVP @rolandguijt | [email protected]
  2. The Story Begins Alice wants to pay €5,000 to a

    merchant using FinBuddy. · FinBuddy needs access to Alice’s bank account · Uses OAuth 2.0 for authorization · Mallory is lurking on the network...
  3. Step 1: Authorization URL Exposed FinBuddy builds authorization URL with

    sensitive data: https://bank.example/auth? client_id=finbuddy& redirect_uri=app://callback& scope=payments& amount=5000&account=merchant123
  4. Where Payment Details Leak · Browser history stores entire URL

    · Server access logs capture full query string · Analytics tools track the URL · Network proxies can intercept it
  5. Step 2: Vague Consent Screen Authorization Request FinBuddy wants to:

    ✓ Access your payment accounts No details about amount or recipient!
  6. Step 3: Bearer Token = Shared Secret · Alice approves;

    bank issues bearer token · Code is sent via browser: interceptable · Token is just a string with no binding · Anyone with the token can use it · Valid for high-value payment operations
  7. Mallory's Attack Vectors · Rogue WiFi network intercepts traffic ·

    Compromised proxy · Server log files left unsecured · Cross-site scripting (XSS) attack
  8. Mallory Strikes! · Mallory intercepts the bearer token from logs

    · Replays token from her own machine · Changes payment destination to her account · Bank API can't distinguish legitimate vs. stolen token
  9. Alice's Money Goes to Mallory Everyone followed an OAuth tutorial...

    Yet the payment still moved where it shouldn't!
  10. FAPI 2.0 to the Rescue Security profile for high value

    scenarios Protects APIs and clients Set of OAuth BCPs (Best Current Practices)
  11. Sent sensitive data in the authorize request Thou Shall Not

    Main FAPI Rules Use unconstrained access tokens Use unbound codes when using code flow Authenticate clients using a “password” Use Resource Owner Password Credentials Support public clients
  12. Client Aut n o i t a z i r

    ho m o r f de Co Browser t s e u req Identity Provider t n i o ndp r o h t au e n o i izat Authorization Code Response type: code Scope: openid
  13. Code to token endpoint Client m o r f de

    Co Browser Identity Provider t n i o ndp r o h t au e n o i izat Authorization Code Response type: code Scope: openid
  14. Authorization Code Interception Attack Authorization Code Flow Problems Malicious apps

    can register a URL scheme matching the code target Attacker could gain access to logs Public clients are extra vulnerable (no client secret) Solution: bind code to client
  15. code_challenge (hash of code_verifier) code_challenge_method (hash type) Code to token

    endpoint code_verifier Identity Provider t n i o p d n e n o i t a z i r o h t u a m o Code fr Browser Authorization Code with PKCE Response type: code Scope: openid
  16. PAR (Pushed Authorization Request) POST Client Id Scopes ResponseType Redirect

    URI Server application Browser Requires client authentication PAR endpoint Identity Provider
  17. DPoP DPoP proof: JWT Standard token request parameters Client Request

    info Public key Signature Identity Provider
  18. DPoP JWT Request info Signature Verify DPoP proof using public

    key in token API Client The client demonstrated proof of possession of the private key