UNPKG

@tryauth/tryauth-client-ts

Version:

TypeScript library for OAuth2 Authentication

190 lines (141 loc) 7.5 kB
# tryauth-client-ts [![NPM version][npm-image]][npm-url] ## Index - [Install](#install) - [Implicit Flow](#implicit-flow) - [Authorization Code Flow](#authorization-code-flow) - [Check](#check) [npm-image]: https://img.shields.io/npm/v/@tryauth/tryauth-client-ts.svg?style=flat-square [npm-url]: https://www.npmjs.com/package/@tryauth/tryauth-client-ts ## Install From [npm](https://npmjs.org): ```sh npm install @tryauth/tryauth-client-ts ``` After installing the `tryauth-client-ts` module using [npm](https://npmjs.org), you'll need to import it using: ``` import TryAuth from '@tryauth/tryauth-client-ts'; ``` ## Implicit Flow Provides support for `implicit` authentication flow. ### Initialize The `Authorize` will redirect to the Issuer Endpoint than the user can login. ```js const tryAuth: TryAuth = new TryAuth(); tryAuth.Authorize({ ClientId: '<contact us to get a trial ClientId>', IssuerEndpoint: '<contact us to get a trial Issuer Endpoint>', ResponseType: 'token id_token', // return id_token and access_token in querystring Scopes: 'openid email' // RedirectUri: '' it's not required, window.location it's the default value }); ``` **Parameters** | Option|Type|Description| | :---------------------------- | ----------------- | ---------- | | `ClientId`| string (required) | The Client ID found on your Application settings page. | `IssuerEndpoint`| string (required) | Your TryAuth account domain such as `'example.tryauth.com'` or `'example.tryauth.com'`. | `ResponseType`| string (required) | Response type for all authentication requests. Only supports `token id_token`. | `Scopes`| string (required) | The default scopes used for all authorization requests. | `RedirectUri` | string | The URL where TryAuth will call back to with the result of a successful or failed authentication. ## Check Allows to acquire a new token and/or access token for a user who has already authenticated against TryAuth for your domain. If the user is not authenticated, you will receive an error. ```js const tryAuth: TryAuth = new TryAuth(); const tryAuthAuthorizationResponse = await tryAuth.CheckAuthorize(); console.log('AccessToken=' + tryAuthAuthorizationResponse.AccessToken); console.log('IdToken=' + tryAuthAuthorizationResponse.IdToken); console.log('ExpiresAt=' + tryAuthAuthorizationResponse.ExpiresAt); console.log('Email=' + tryAuthAuthorizationResponse.Email); console.log('Error=' + tryAuthAuthorizationResponse.Error); ``` ## Authorization Code Flow Provides support for `authorization_code` authentication flow with PKCE (Proof Key for Code Exchange). ### Initialize The `GetAuthorizationCode` function will redirect to the Issuer Endpoint than the user can login. After login the response callback URL will store the `code` in the browser's local storage. ```js const tryAuth: TryAuth = new TryAuth(); tryAuth.GetAuthorizationCode({ ClientId: '<contact us to get a trial ClientId>', IssuerEndpoint: '<contact us to get a trial Issuer Endpoint>', ResponseType: 'code', Scopes: 'openid email profile offline_access', // RedirectUri: '' it's not required, window.location it's the default value }); ``` **Parameters** | Option|Type|Description| | :---------------------------- | ----------------- | ---------- | | `ClientId`| string (required) | The Client ID found on your Application settings page. | `IssuerEndpoint`| string (required) | Your TryAuth account domain such as `'example.tryauth.com'` or `'example.tryauth.com'`. | `ResponseType`| string (required) | Response type for all authentication requests. Only supports `code`. | `Scopes`| string (required) | The default scopes used for all authorization requests. Enable refresh token adding `offline_access` scope. | `RedirectUri` | string | The URL where TryAuth will call back to with the result of a successful or failed authentication. ### Get Access Token, Id Token and optional Refresh Token code After you login and the `code` already is stored in the browser's local storage you can get the `access_token`, `id_token`, `refresh_token` (optional, dependes on the `offline_access` scope) using the `GetSilentAuthorizationCodeToken` function. > The `code` only can be used one time. ```js const tryAuth: TryAuth = new TryAuth(); const tryAuthAuthorizationCodeTokenResponse = tryAuth.GetSilentAuthorizationCodeToken({ ClientId: '<contact us to get a trial ClientId>', ClientSecret: '<contact us to get a trial ClientSecret>', IssuerEndpoint: '<contact us to get a trial Issuer Endpoint>', ResponseType: 'code' }); ``` **Parameters** | Option|Type|Description| | :---------------------------- | ----------------- | ---------- | | `ClientId`| string (required) | The Client ID found on your Application settings page. | `ClientSecret`| string (required) | The Client Secret found on your Application settings page. | `IssuerEndpoint`| string (required) | Your TryAuth account domain such as `'example.tryauth.com'` or `'example.tryauth.com'`. | `ResponseType`| string (required) | Response type for all authentication requests. Only supports `code`. **Return** The `tryAuthAuthorizationCodeTokenResponse` object contains some properties like: | Property| | :---------------------------- | |AccessToken| |IdToken| |RefreshToken| |TokenType| |Error| ### Renew the Access Token using Refresh Token If you choose to receive the Refresh Token using the `offline_access` scope, you can renew your Access Token using the `GetAuthorizationCodeRefreshToken` function. ```js const tryAuth: TryAuth = new TryAuth(); const tryAuthAuthorizationCodeTokenResponse = tryAuth.GetAuthorizationCodeRefreshToken({ ClientId: '<contact us to get a trial ClientId>', ClientSecret: '<contact us to get a trial ClientSecret>', IssuerEndpoint: '<contact us to get a trial Issuer Endpoint>', RefreshToken: '<the refresh token code you receive in the function above>' }); ``` **Parameters** | Option|Type|Description| | :---------------------------- | ----------------- | ---------- | | `ClientId`| string (required) | The Client ID found on your Application settings page. | `ClientSecret`| string (required) | The Client Secret found on your Application settings page. | `IssuerEndpoint`| string (required) | Your TryAuth account domain such as `'example.tryauth.com'` or `'example.tryauth.com'`. | `RefreshToken`| string (required) | The refresh token code you receive in the function above. **Return** The `tryAuthAuthorizationCodeTokenResponse` object is the same of `GetSilentAuthorizationCodeToken` function above. ### Logout For logout use the `LogoutEndSessionAuthorizationCode` function. ```js const tryAuth: TryAuth = new TryAuth(); tryAuth.LogoutEndSessionAuthorizationCode({ ResponseType: 'code', IssuerEndpoint: '<contact us to get a trial Issuer Endpoint>', RedirectUri: '<after logout the url return>', IdToken: '<id_token>', State: 'the state in url' }); ``` **Parameters** | Option|Type|Description| | :---------------------------- | ----------------- | ---------- | | `ResponseType`| string (required) | `code` | `IssuerEndpoint`| string (required) | Your TryAuth account domain such as `'example.tryauth.com'` or `'example.tryauth.com'`. | `RedirectUri`| string (required) | After logout TryAuth will redirect to this URL. | `IdToken`| string (required) | The `id_token` you receive when you get the token. | `State`| string (required) | After log in the state will be in the URL.