-
Notifications
You must be signed in to change notification settings - Fork 6
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
Question: Why not use transactionId as the user identifier? #2
Comments
That's a great question. The app account token is not stored on the client, but on Apple App Store servers. These are the steps:
I could be wrong, but I think there are edge cases where the |
Thank you. The transaction id that the client puts in the I see that it's a UInt64. I haven't had any real transaction ID, could you tell me whether the following concern makes sense? If this id is a naively incremented integer like 1,2,3... for each transaction, then the attacker can easily try a few integers and find one that would correspond to an active subscription's transaction ID. They can call the |
@atacan: I've updated the in-app purchase validation and Pico Proxy now verifies the JWS representation of StoreKit 2's Transaction. The previous step where Pico Proxy calls the App Store Server is no longer necessary. See for more details: https://medium.com/p/98626641d3ea The AppStoreAccount token is still used to identify the original purchaser so that there is one rate limit for the whole family (in case the developer enabled family sharing). |
First of all, thank you for the great work, and sorry to hear the financial loss that you had.
I was wondering why transaction ID was not used as a user identifier instead you rely on app account token that is set by the app during the purchase. Isn't
originalTransactionId
also unique by an Apple account that made the purchase?I thought wherever I save it, the user can delete the app account token. UserDefaults, Keychain, Application support etc. can easily be manipulated by the user on macOS.
The text was updated successfully, but these errors were encountered: