OneID SSO Integration (PKCE)
OneID's Identity and Access Management (IAM) solution uses PKCE (Proof Key for Code Exchange) method from open standards such as Oauth2 & OpenID Connect to provide authentication and authorization.
Step 1 - Determined the platform 
OneID SSO support many type of platform including:
- Native/Mobile App (Mobile or Desktop app that support web browser web-view) 
- Single-Page App (JavaScript web app that runs in the browser) 
- Regular Web App (Traditional web app that runs on the server) 
- Backend/API (An API or service protected) 
Step 2 - Pick the SDK
Select the SDK that match with your project programing language
Language & framework
OIDC Client
Vue
https://github.com/IdentityModel/oidc-client-js
React Native
https://github.com/FormidableLabs/react-native-app-auth
Angular
https://github.com/manfredsteyer/angular-oauth2-oidc
Javascript
https://github.com/openid/AppAuth-JS
Android
https://github.com/openid/AppAuth-Android
IOS & MacOS
https://github.com/openid/AppAuth-iOS
Golang
https://godoc.org/golang.org/x/oauth2
https://github.com/coreos/go-oidc
PHP
https://oauth.net/code/php/
Java
https://github.com/scribejava/scribejava
.NET
https://oauth.net/code/dotnet/
NodeJS
https://github.com/jaredhanson/passport
https://github.com/simov/grant
https://github.com/lelylan/simple-oauth2
RUBY
https://github.com/oauth-xx/oauth2
Python
https://oauth.net/code/python/
Step 3 - Create Client
Contact us to create/register Client: [email protected]
Tenant & Client is the identity of the 3rd party service which use OneID SSO. Required information for registering including:
- client_id- ID of the 3rd party app
- client_secret- optional
- redirect_uris- the redirect url after the process complete
- owner- owner of the 3rd party app
- contacts- email of the owner
- client_name- name of the 3rd party app. This information is required for white label
- logo_uri- logo of the 3rd party app. This information is required for white label
- client_uri- home page URL of 3rd party app. This information is required for white label
- policy_uri- policy page. This information is required for white label
- tos_uri- term & condition page. This information is required for white label
- post_logout_redirect_uri- Hyperlink when click on 3rd party app logo image
- frontchannel_logout_uri- Logout URL for frontent
- backchannel_logout_uri- Logout URL for backend
- metadata- json format data which contain additional data such as:- background image 
- hotline - phone number 
- support email 
 
Step 4 - Working Flow

Make the login button.
Assuming step 2 & 3 is completed.
- User click the login button on 3rd app 
- SDK it will generate - code_verifierand- code_challenge(from- code_verifier).
- SDK send - authorization_codeand- code_challengeto /auth endpoint- GET- https://oauth-qc.vinid.dev/oauth2/auth?client_id={client_id}&redirect_uri={callback_url}&response_type=code&scope={scope}&state={state}&code_challenge={code_challenge}&code_challenge_method=S256
- OneID redirect to OneID login form 
- User login and consent scope 
- OneID callback - authorization_codeto 3rd app
- SDK call /token endpoint with - authorization_codeand code_verifier
- OneID validate - code_verifier
- OneID return - access_token,- id_token&- access_token
Get resource with authorization code
10. 3rd party app uses access_token to access resource server (ex: /userinfo endpoint). 11. Resource server return data.
Last updated
Was this helpful?
