Microsoft OAuth 2.0 and Xbox Authentication
- Microsoft OAuth Code Flow
- Xbox Authentication
- Xbox Sisu Authentication with Proof-of-Possession
Currently only auth code flow is supported.
// Initialize API clientvarhttpClient=newHttpClient();varapiClient=newMicrosoftOAuthCodeApiClient("<CLIENT-ID>","<SCOPES>",httpClient);// replace "SCOPES" to XboxAuth.XboxScope for Xbox Authentication// Authenticate with auth code flowvarcodeFlow=newMicrosoftOAuthCodeFlowBuilder(apiClient).Build();MicrosoftOAuthResponseresult=awaitcodeFlow.Authenticate();// `result.AccessToken` can be used on Xbox Authentication// store `result` variable to refresh token later.// `MicrosoftOAuthResponse` can be serialized (like json)Console.WriteLine(result.AccessToken);Console.WriteLine(result.RefreshToken);if(!result.Validate()){varnewResult=awaitapiClient.RefreshToken(result.RefreshToken,CancellationToken.None);Console.WriteLine(newResult.AccessToken);Console.WriteLine(newResult.RefreshToken);}There are three Xbox authentication methods. You can find a description of each method here.
varhttpClient=newHttpClient();varxboxAuthClient=newXboxAuthClient(httpClient);varuserToken=awaitxboxAuthClient.RequestUserToken("<microsoft_oauth2_access_token>");varxsts=awaitxboxAuthClient.RequestXsts(userToken.Token,"<relying_party>");Console.WriteLine(xsts.Token);varhttpClient=newHttpClient();varxboxAuthClient=newXboxAuthClient(httpClient);varuserToken=awaitxboxAuthClient.RequestSignedUserToken(newXboxSignedUserTokenRequest{AccessToken="<microsoft_oauth2_access_token>",TokenPrefix=AbstractXboxAuthRequest.XboxTokenPrefix});vardeviceToken=awaitxboxAuthClient.RequestDeviceToken(newXboxDeviceTokenRequest{DeviceType=XboxDeviceTypes.Nintendo,DeviceVersion="0.0.0"});vartitleToken=awaitxboxAuthClient.RequestTitleToken(newXboxTitleTokenRequest{AccessToken="<microsoft_oauth2_access_token>",DeviceToken=deviceToken.Token});varxsts=awaitxboxAuthClient.RequestXsts(newXboxXstsRequest{UserToken=userToken.Token,DeviceToken=deviceToken.Token,TitleToken=titleToken.Token,RelyingParty="<relying_party>"});Console.WriteLine(xsts.Token);varhttpClient=newHttpClient();varxboxAuthClient=newXboxAuthClient(httpClient);vardeviceToken=awaitxboxAuthClient.RequestDeviceToken(XboxDeviceTypes.Win32,"0.0.0");varsisuResult=awaitxboxAuthClient.SisuAuth(newXboxSisuAuthRequest{AccessToken="<microsoft_oauth2_access_token>",ClientId=XboxGameTitles.MinecraftJava,DeviceToken=deviceToken.Token,RelyingParty="<relying_party>"});Console.WriteLine(xsts.Token);These documents explain how Microsoft OAuth 2.0 works.
Desktop application calling a web api (XboxAuthNet implements interactive authentication)
This project was made possible thanks to the contributions of various open-source projects. not used any document from NDA developer program