-
Notifications
You must be signed in to change notification settings - Fork 52
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
NUT-XX: Clear authentication – NUT-XX+1: Blind authentication #198
base: main
Are you sure you want to change the base?
Conversation
I’m glad to see 2 NUT specs (Clear +Bind) and it is what is needed. I’ve made some suggestions below which are open for debate and acceptance.
There can also be mints with only blinded auth. E.g. whitelisted pubkeys. Simply call the blind_auth endpoint with Auth as pubkey and get blinded auth tokens. No need for clear auth or open ID.
This way the protocol is not restricting to use only blinded auth rather the mint can choose to implement clear or blinded auth and provide the information in the manifest/NUT06
Questions: How will the CAT expiry time be attached to BAT expiry time? |
This is already possible.
This is not in scope of this spec.
This is a matter of taste and makes no practical difference. For proprietary API's that don't need interop this is fine. Here, the header should indicate which type of auth is used.
Individual BATs have no expiry, only their keyset has.
Still to be determined, part of the todo list. |
These NUTs describe a blind authentication protocol that uses OAuth2.0 OpenID connect standards to limit access to their mint. Mint operators can restrict access to their mint to a known set of users with registered accounts, while still providing them privacy during the use of the mint with the help of blind signatures (blind auth tokens).
Essentially, we're using ecash tokens for blind authentication. We're using ecash to secure ecash.
There are two NUTs in this PR:
The diagram below illustrates the protocol flow.
Notes
/v1/
ecash endpoints we already use. I found it quite convenient to re-use code from the wallet and the mint side to mint, validate, and keep track of spent blind auth tokens.Todo:
client_id
should be part of the info endpoint so it can be dynamic (instead of requiring the OICD usecashu-client
)max_bat_mint
, rate-limiting BAT minting (in time), and rotatingauth
keysets