Implement Apple ID OAUTH2.0 SSO for ASP.NET C# VS2022

Job ID: 40142266

Budget: $30 – $250 USD

My existing and working ASP.NET 4.8 WebForms application already supports OAuth 2.0 logins through Google, Microsoft and Keycloak. Now I need Apple ID added to the mix so users can enjoy the same single-sign-on convenience.

You will work inside the current OAuth 2.0 flow with Microsoft OWIN—no ground-up rebuild. The main tasks are:

• Adapt the current solution for use with Apple ID authentication.
• Implement the Authorization Code flow, hook it into the current login page, and surface a “Sign in with Apple” button that matches Apple’s UI guidelines.
• Exchange the code for tokens, validate the id_token (JWT) server-side, display the authenticated user information on the webpage and persist refresh tokens the same way we already do for Google and Microsoft.
• Add concise setup notes so I can re-generate keys or change redirect URIs later.
• Provide consultancy to get the application running with our own Apple keys

I’ll consider the job complete once I can:
1. Click the Apple ID button on our staging site,
2. Authenticate with an Apple ID,
3. Land back in the app already recognised as an authenticated user, and
4. See no errors in the server logs or browser console
5. or land back on the login page if the user isn't authenticated
all this with our Apple keys/certificates etc.

The codebase is C#, standard WebForms, and the current OAuth helpers are built on Microsoft.Owin and System.IdentityModel.Tokens.Jwt, so staying within those libraries is essential.

Requirements:
- Integrate Apple ID for authentication by OAUTH2
- Retrieve basic profile information (name and email) upon login.
- the application must work in IIS Express (local URL, port number tbd) and on IIS staging system (e.g. https://www.myapp.copm/, URL tbd)
- consultancy on how to configure the application for Apple ID to run the application must be provided (the keys, certificate etc. will not be provided to the developer, you have to test it with your own keys)
- error handling is implemented (e.g. if authentication fails)