From 5b177e639340397933f219e73c00ade31ce17fc6 Mon Sep 17 00:00:00 2001 From: Jeremy Klein Date: Sun, 22 Sep 2024 15:44:03 -0700 Subject: [PATCH 1/4] Add UMADE-01: UMA Auth --- README.md | 9 + extensions/umade-01-auth.md | 275 ++++++++++++++++++++++++++++++ images/uma-auth-high-level.png | Bin 0 -> 68173 bytes umad-10-configuration-document.md | 41 +++++ 4 files changed, 325 insertions(+) create mode 100644 extensions/umade-01-auth.md create mode 100644 images/uma-auth-high-level.png diff --git a/README.md b/README.md index f5a351f..f8107e2 100644 --- a/README.md +++ b/README.md @@ -19,6 +19,15 @@ This repo is organized as a set of individual documents describing a single mess | [UMAD-09](/umad-09-invoice.md) | Invoice | | [UMAD-11](/umad-11-request.md) | Request | +## Extensions + +UMA has a number of extensions that can be implemented by VASPs to provide additional functionality. These extensions are +not part of the core UMA payment protocol, but are defined here for reference. + +| Link | Title | +| ---------------------------------------------- | ------------------------------------ | +| [UMADE-01](/umade-01-auth.md) | UMA Auth | + ## Additional Resources - [Full Documentation and Guides](https://docs.uma.me) diff --git a/extensions/umade-01-auth.md b/extensions/umade-01-auth.md new file mode 100644 index 0000000..0b8046c --- /dev/null +++ b/extensions/umade-01-auth.md @@ -0,0 +1,275 @@ +# UMADE-01: UMA Auth: NWC + OAuth + +UMA Auth is an extension of UMA which allows users to connect their UMA-enabled wallets to third-party applications. +This allows users to send and receive payments in the currency of their choice from within their favorite apps. It also +allows application developers to easily add payment functionality to their apps without needing to worry about the +underlying payment infrastructure. + +This is made possible by the [Nostr Wallet Connect (NWC)](https://nwc.dev) protocol, which was designed to connect +Lightning-enabled wallets to third-party applications via [Nostr](https://nostr.com/). UMA auth extends NWC to simplify +the UX of connecting a wallet (using OAuth 2.0), and add cross-currency payments to allow users and applications to +transact in any currency they choose. + +## Protocol Overview + +From a protocol perspective, UMA Auth is a combination of the UMA protocol, OAuth 2.0, and the NWC protocol. + +![UMA Auth Protocol Overview](/images/uma-auth-high-level.png) + +When a user wants to connect their UMA wallet to a third-party application: + +1. The client app starts a standard OAuth 2.0 flow by redirecting the user to the UMA provider's authorization endpoint. +2. The UMA provider authenticates the user and asks for their permission to connect to the client app. +3. The UMA provider redirects the user back to the client app with an authorization code as usual in OAuth 2.0. +4. The client app exchanges the authorization code for an NWC connection string and refresh token. +5. The client app uses the NWC connection string to connect to the user's UMA wallet and start sending and receiving payments. +6. The client app uses the refresh token to get a new NWC connection string when the old one expires. + +This process utilizes the battle-tested security and familiar UX of OAuth to establish a connection, with the simplicity +and flexibility of Nostr Wallet Connect for sending and receiving payments. Users can configure granular permissions and +budgets for each connected app, and revoke access at any time. + +## Client App Registration + +Traditionally, OAuth 2.0 requires client apps to register with the authorization server before they can request access +to user resources. Because NWC and UMA Auth connect client apps to arbitrary wallet services, it is not feasible for +every client app to register with every wallet service or UMA provider. Instead, the Nostr protocol is used for +decentralized client app registration. + +When an application wants to use UMA Auth, it generates a single Nostr keypair that indentifies the appplication. This +is called the "identity keypair". An application should have a single identity keypair that represents the application +as opposed to one for each app instance or user. The identity keypair is used to sign and publish a nostr registration +message (kind 13195) that contains the application's name, logo, allowed redirect URLs, etc. For example: + +```jsonc +{ + "kind": 13195, + // ... other fields + "content": { + "name": "Zappy Bird", + "nip05": "_@zappybird.com", + "image": "https://zappybird.com/logo.png", + "allowed_redirect_uris": ["https://zappybird.com/auth/callback", "zappybird://auth/callback"], + } +} +``` + +This event contains the content that would show up on a permissions page: app name, image, and a +[NIP-05-verified](https://github.com/nostr-protocol/nips/blob/master/05.md) address. Critically, it also contains a list +of allowed redirect URIs. This list is used to ensure that apps that claim to be Zappy Bird can only redirect to the +URIs that Zappy Bird has claimed. This prevents phishing attacks where an attacker could register an app with the same +name and logo as Zappy Bird and redirect users to a malicious site. + +The client ID used for the OAuth flow is ` `, where `` is the public key of the +identity keypair (in bech32 "npub" format) and `` is the Nostr relay where the client app published the 13195 +event. The client ID is used by the VASP to look up the client app's registration event, show the user the app's metadata, +and limit the redirect URIs to those listed in the event. + +### Client App Verification + +Once the client app has published this event, it can be optionally verified by an authority via a +[NIP-32 label event](https://github.com/nostr-protocol/nips/blob/master/32.md). +For example, if "Ol' Reliable Fintech" is a known trusted verifier of client applications, VASPs could look for a label +event from them for the given 13195 event and show the user a “verified” badge. The VASP can also check the listed domain +for NIP-05 verification. In order to be verified by a trusted authority, the client application can manually register +with an authority. As a future optimization, they can issue a +[NIP-89 Data Vending Machine](https://github.com/nostr-protocol/nips/blob/master/90.md) request to optionally pay +anyone claiming to be an authority to issue labels verifying their app identity event. This can be automatic, +asynchronous, and fully decentralized. + +For more details on the Nostr protocol for client app registration, see +[NIP-68](https://github.com/nostr-protocol/nips/pull/1383), which was designed specifically for this purpose. + +## OAuth Connection Flow + +The OAuth connection flow is a standard OAuth 2.0 flow with a few UMA-specific parameters and details. Client applications +first need to discover the UMA VASP's OAuth endpoints and supported features. This is done by fetching the VASP's UMA +configuration document from `/.well-known/uma-configuration` on the VASP's domain. See [UMAD-10](/umad-10-configuration-document.md) +for more details. The configuration document should contain the following fields relevant to UMA Auth: + +- `authorization_endpoint`: The URL of the VASP's authorization endpoint. This is where the client application should send + the user to authenticate and authorize the client application to access their wallet. +- `token_endpoint`: The URL of the VASP's token endpoint. This is where the client application exchanges an authorization + code for an access token (a new NWC Connection), and where the client application can refresh an access token. +- `nwc_commands_supported`: An array of strings representing the NWC commands that the VASP supports. This should be an + array of strings, where each string is a valid NWC command name. +- `grant_types_supported`: An array of strings representing the OAuth grant types that the VASP supports. For now, in + most cases, this should just be `["authorization_code"]`. +- `code_challenge_methods_supported`: An array of strings representing the PKCE code challenge methods that the VASP + supports. For now, in most cases, this should just be `["S256"]`. +- `connection_management_endpoint`: The URL of the VASP's connection management endpoint. This is where the user can + create, update, and delete NWC Connections. +- `revocation_endpoint`: The URL of the VASP's revocation endpoint. This is where the client application can revoke an + access token (NWC Connection). + +As with any OAuth 2.0 flow, the client application should start the auth flow by redirect the user to the VASP's +authorization endpoint with the following query parameters: + +### Auth Request URL Params + +An example URL for the auth request might look like this: + +```url +?client_id=npub37fd9…%3Awss%3A%2F%2Fmyrelay.info&redirect_uri=https%3A%2F%2Fexample.com&response_type=code&code_challenge=a43f6ed&code_challenge_method=S256&state=foobar&required_commands=pay_invoice%20make_invoice%20lookup_invoice&optional_commands=list_transactions&budget=10.USD%2Fmonthly&expires_at=1717964120 +``` + +OAuth params above are listed first, followed by UMA-specific params. + +Standard OAuth Params: + +- `client_id` in the format `identity_npub identity_relay`: This will be used to lookup the client app as described above +in the client app registration section. +- `redirect_uri`: The redirect URI which will receive callback data from the wallet service on successful authentication. +It will get back the auth code that can be exchanged for a token. If there was a kind-13195 nostr event as described above, +the wallet will validate this redirect URI against declared allowed patterns. +- `response_type=code`: Indicates that the “Authorization Code” flow will be used. +- `code_challenge` and `code_challenge_method`: The PKCE exchange details. +- `state`: Optional oauth state param for CSRF and state restoration. + +Extra NWC params: + +- required_commands: A space-separated list of commands that the app requires from the wallet. The wallet MUST NOT connect +if it does not support all of these permissions, or if the user does not grant one of them. +- optional_commands: (optional) A space-separated list of commands that the wallet can enable to add additional functionality. +The wallet MAY ignore these. +- budget: (optional) Requested budget in the format `./`. If the `.` is omitted, +satoshis are assumed. If `/` is omitted, it’s a budget forever. For example, a budget string of “1000” would mean +that this connection can only ever be used for a maximum of 1000 satoshis sent. +- expires_at: (optional) connection cannot be used after this date. Unix timestamp in seconds. + +### Authorization Response + +The auth request's redirect follows the standard OAuth 2.0 flow. Using the `redirect_uri` param, the wallet will redirect +to the client application with either: + +`?error=ACCESS_DENIED&error_description=Some%20short%20message` +(see +[here](https://www.oauth.com/oauth2-servers/authorization/the-authorization-response/#:~:text=longer%20be%20used.-,Error%20Response,-There%20are%20two) +for full description of errors) + +or + +`?code=g0ZGZmNjVmOWI&state=dkZmYxMzE2` + +If the user denies the request, the wallet will redirect with an error. If the user accepts, and there are no other errors, +the wallet will redirect with the auth code and state. + +### Token Exchange + +The client application can then exchange the auth code for an access token and refresh token by sending a POST request to +the VASP's `token_endpoint` as specified in the `uma-configuration` document. An example token request might look like this: + +```http +POST /oauth/token HTTP/1.1 +Host: https://umanwc.examplevasp.com + +grant_type=authorization_code +&code=xxxxxxxxxxx +&redirect_uri=https://example-app.com/redirect +&code_verifier=Th7UHJdLswIYQxwSg29DbK1a_d9o41uNMTRmuH0PM8zyoMAQ +&client_id=npub16f80k0f4vg0nnlepxrqxeh81slyzst2d wss://myrelay.info +``` + +The `redirect_uri` and `client_id` must match the values used in the auth request. The `code_verifier` is the PKCE code +verifier matching the `code_challenge` used in the auth request. If successful, the VASP will respond as follows: + +```http +HTTP/1.1 200 OK +Content-Type: application/json +Cache-Control: no-store + +{ + "access_token":"b9d11fe05e266fe7389fdf1359211e7859656a7898d64f3066092156de109b31", + "token_type":"Bearer", + "expires_in":86400, + "refresh_token":"IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTDk", + "nwc_connection_uri": +"nostr+walletconnect://a421a5e2a615eff3b797be5318e4e187d24b100748cfaa8d0b390ce659906d8f?relay=wss://relay.getalby.com/v1&secret=b9d11fe05e266fe7389fdf1359211e7859656a7898d64f3066092156de109b31&lud16=$bob@examplevasp.com" + "commands": ["pay_invoice", "fetch_quote", "execute_quote", "make_invoice", "pay_to_address"], + "budget": "100.USD/month", + "nwc_expires_at": 1721796505 +} +``` + +The standard OAuth token response fields are included here along with some details about the established NWC connection. +The client can use the `nwc_connection_uri` to make requests to the wallet. Note that the `access_token` is the +`secret` in the `nwc_connection_uri`. This implies that the `nwc_connection_uri` expires when the `access_token` expires +(denoted by `expires_in`). This is usually fairly short (~2 hours), but can be configured by the VASP. Client apps should +store the `refresh_token` securely and use it to get a new `access_token` when the old one expires. + +### Refreshing Tokens + +Token refresh works exactly as in OAuth 2.0. The client app sends a POST request to the VASP's `token_endpoint` as follows: + +```http +POST /oauth/token HTTP/1.1 +Host: https://nwc.uma.jeremykle.in + +grant_type=refresh_token +&refresh_token=IwOGYzYTlmM2YxOTQ5MGE3YmNmMDFkNTVk +&client_id=npub16f80k0f4vg0nnlepxrqxeh81slyzst2d:wss://myrelay.info +``` + +The VASP will respond with the same format as the initial access token request. The client app should store the new +`access_token` and `refresh_token` and use the new `nwc_connection_uri` to make requests to the wallet. + +## NWC Requests + +Requests should be made to the `nwc_connection_uri` provided in the token response. For details on the NWC protocol, see +[NIP-47](https://github.com/nostr-protocol/nips/blob/master/47.md). + +### Pending NIP PRs Adopted in UMA Auth + +UMA Auth propoeses some new NWC commands to support cross-currency payments and client app registration. These changes +are proposed in the following NIPs PRs: + +- [NIP-68: Client App Registration](https://github.com/nostr-protocol/nips/pull/1383) +- [Cross-Currency Payments](https://github.com/nostr-protocol/nips/pull/1353) +- [Add get_budget command](https://github.com/nostr-protocol/nips/pull/1504) + +#### Budgets + +Budgets can be set per-connection to limit the amount of money that can be sent by a client application in a given period. +The budget granted is specified in the `budget` field of the token response. The format is `./`. + +Client applications can also fetch the currently available budget for a connection by sending a `get_budget` command to the +wallet. The wallet will respond with the current budget details as follows: + +```json +{ + "result_type": "get_budget", + "result": { + "remaining_budget_msats": 10000, + "total_budget_msats": 100000, + "renews_at": 1693876973, // timestamp in seconds since epoch, optional. If not provided, the budget does not renew. + "renewal_period": "monthly", // daily|weekly|monthly|yearly|never + "currency": { + "name": "US Dollar", + "code": "USD", + "symbol": "$", + "decimals": 2, + "total_budget": 1000, + "remaining_budget": 100, + } + } +} +``` + +#### NIP-44 Encryption + +At the time of writing, NWC uses [NIP-04](https://github.com/nostr-protocol/nips/blob/master/04.md) for encryption and +decryption of messages. This encryption protocol has been deprecated in favor of +[NIP-44](https://github.com/nostr-protocol/nips/blob/master/44.md), which is known to be more secure, and has been +thoroughly audited by security experts. As a result, any NWC connection established via the UMA Auth OAuth flow will +use NIP-44 for encryption and decryption of messages. + +## Additional Resources + +- [Full Documentation and Guides](https://docs.uma.me/uma-auth/introduction) +- Client SDKs: + - [Web/React](https://github.com/uma-universal-money-address/uma-js-sdk) + - [Android](https://github.com/uma-universal-money-address/uma-auth-client-android) + - (iOS SDK coming soon) +- [VASP Open API Schema](https://github.com/uma-universal-money-address/uma-auth-api) +- [UMA NWC Docker Image](https://github.com/uma-universal-money-address/uma-nwc-server). See the documentation for + more info. diff --git a/images/uma-auth-high-level.png b/images/uma-auth-high-level.png new file mode 100644 index 0000000000000000000000000000000000000000..c9d25e1f8a3f8e66e51fd2753ec9f66d8fd46a2a GIT binary patch literal 68173 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 literal 0 HcmV?d00001 diff --git a/umad-10-configuration-document.md b/umad-10-configuration-document.md index 69d143b..26bb126 100644 --- a/umad-10-configuration-document.md +++ b/umad-10-configuration-document.md @@ -23,6 +23,26 @@ The configuration document MAY contain the following fields: - `uma_request_endpoint`: The URL to which UMA requests can be sent. This should be a URL that the receiving VASP can use to send UMA requests to the sending VASP. See [UMAD-11](/umad-11-request.md) for more details. +These fields are required if implementing [UMA Auth (UMADE-01)](/extensions/umade-01-auth.md), but should not be provided +otherwise: + +- `authorization_endpoint`: Like in OAuth/OIDC, the URL of the VASP's authorization endpoint. This is where the client + application should send the user to authenticate and authorize the client application to access their wallet. +- `token_endpoint`: Like in OAuth/OIDC, the URL of the VASP's token endpoint. This is where the client application + exchanges an authorization code for an access token (a new NWC Connection), and where the client application can + refresh an access token. +- `nwc_commands_supported`: An array of strings representing the NWC commands that the VASP supports. This should be an + array of strings, where each string is a valid NWC command name. See [UMADE-01](/extensions/umade-01-auth.md) for more + details. +- `grant_types_supported`: An array of strings representing the OAuth grant types that the VASP supports. For now, in + most cases, this should just be `["authorization_code"]`. +- `code_challenge_methods_supported`: An array of strings representing the PKCE code challenge methods that the VASP + supports. For now, in most cases, this should just be `["S256"]`. +- `connection_management_endpoint`: The URL of the VASP's connection management endpoint. This is where the user can + can create, update, and delete NWC Connections. +- `revocation_endpoint`: The URL of the VASP's revocation endpoint. This is where the client application can revoke an + access token (NWC Connection). + ## Example Configuration Document ```http @@ -36,5 +56,26 @@ Access-Control-Allow-Origin: * "name": "Cool VASP", "uma_major_versions": [0, 1], "uma_request_endpoint": "https://coolvasp.net/path/to/request/url" + + "authorization_endpoint": "https://coolvasp.net/oauth/auth", + "token_endpoint": "https://coolvasp.net/oauth/token", + "nwc_commands_supported": [ + "pay_invoice", + "make_invoice", + "lookup_invoice", + "get_balance", + "get_budget", + "get_info", + "list_transactions", + "pay_keysend", + "lookup_user", + "fetch_quote", + "execute_quote", + "pay_to_address", + ], + "grant_types_supported": ["authorization_code"], + "code_challenge_methods_supported": ["S256"], + "connection_management_endpoint": "https://coolvasp.net/nwc/connections", + "revocation_endpoint": "https://coolvasp.net/oauth/revoke" } ``` From 9f88695847ddf534ebe04451d6f5f8d0990a0c43 Mon Sep 17 00:00:00 2001 From: Jeremy Klein Date: Sun, 22 Sep 2024 15:50:29 -0700 Subject: [PATCH 2/4] add image and link --- README.md | 2 +- extensions/umade-01-auth.md | 6 +++++- images/auth-app-identity-flow.png | Bin 0 -> 94265 bytes 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 images/auth-app-identity-flow.png diff --git a/README.md b/README.md index f8107e2..ae80400 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ not part of the core UMA payment protocol, but are defined here for reference. | Link | Title | | ---------------------------------------------- | ------------------------------------ | -| [UMADE-01](/umade-01-auth.md) | UMA Auth | +| [UMADE-01](/extensions/umade-01-auth.md) | UMA Auth | ## Additional Resources diff --git a/extensions/umade-01-auth.md b/extensions/umade-01-auth.md index 0b8046c..206d679 100644 --- a/extensions/umade-01-auth.md +++ b/extensions/umade-01-auth.md @@ -36,6 +36,10 @@ to user resources. Because NWC and UMA Auth connect client apps to arbitrary wal every client app to register with every wallet service or UMA provider. Instead, the Nostr protocol is used for decentralized client app registration. +![Client App Registration](../images/auth-app-identity-flow.png) + +When an application wants to use UMA Auth, it generates a single Nostr keypair that identifies the application. This + When an application wants to use UMA Auth, it generates a single Nostr keypair that indentifies the appplication. This is called the "identity keypair". An application should have a single identity keypair that represents the application as opposed to one for each app instance or user. The identity keypair is used to sign and publish a nostr registration @@ -216,7 +220,7 @@ The VASP will respond with the same format as the initial access token request. ## NWC Requests Requests should be made to the `nwc_connection_uri` provided in the token response. For details on the NWC protocol, see -[NIP-47](https://github.com/nostr-protocol/nips/blob/master/47.md). +[NIP-47](https://github.com/nostr-protocol/nips/blob/master/47.md). ### Pending NIP PRs Adopted in UMA Auth diff --git a/images/auth-app-identity-flow.png b/images/auth-app-identity-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..698975c7c3e17b7e9745b4cd1869bf90e8b95e1a GIT binary patch literal 94265 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�TKq#PTJW9 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�TQH?ugFmnFQ3!o?80f4Q1KOMF{XT$m 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 Date: Sun, 22 Sep 2024 15:53:37 -0700 Subject: [PATCH 3/4] Add CLI link --- extensions/umade-01-auth.md | 1 + 1 file changed, 1 insertion(+) diff --git a/extensions/umade-01-auth.md b/extensions/umade-01-auth.md index 206d679..dd006d4 100644 --- a/extensions/umade-01-auth.md +++ b/extensions/umade-01-auth.md @@ -277,3 +277,4 @@ use NIP-44 for encryption and decryption of messages. - [VASP Open API Schema](https://github.com/uma-universal-money-address/uma-auth-api) - [UMA NWC Docker Image](https://github.com/uma-universal-money-address/uma-nwc-server). See the documentation for more info. +- [UMA Auth CLI tool](https://github.com/uma-universal-money-address/uma-auth-cli) From 9bb9c0aedbfa4a83848b75db9df3d1c42116c11d Mon Sep 17 00:00:00 2001 From: Jeremy Klein Date: Mon, 23 Sep 2024 23:49:19 -0700 Subject: [PATCH 4/4] Remove accidental copy-paste --- extensions/umade-01-auth.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/extensions/umade-01-auth.md b/extensions/umade-01-auth.md index dd006d4..b48898b 100644 --- a/extensions/umade-01-auth.md +++ b/extensions/umade-01-auth.md @@ -38,8 +38,6 @@ decentralized client app registration. ![Client App Registration](../images/auth-app-identity-flow.png) -When an application wants to use UMA Auth, it generates a single Nostr keypair that identifies the application. This - When an application wants to use UMA Auth, it generates a single Nostr keypair that indentifies the appplication. This is called the "identity keypair". An application should have a single identity keypair that represents the application as opposed to one for each app instance or user. The identity keypair is used to sign and publish a nostr registration