sign-in-with-esignet
Version:
A vanilla javascript component for rendering “Sign in with..” button on mosip client’s web page for oidc integration.
130 lines (106 loc) • 9.16 kB
Markdown
# sign-in-with-esignet
Renders a button that will navigate the user to esignet website for authentication. Follows Open Id connect protocol.
## Installation
```
# using npm
npm i sign-in-with-esignet
# using yarn
yarn add sign-in-with-esignet
```
## Props
| prop | type | default value | note |
| -------------- | ------------- | ------------- | -------------------------------- |
| `oidcConfig` | `Json Object` | | Open Id connect configurations |
| `buttonConfig` | `Json Object` | | Configuration for sign in button |
### Prop `oidcConfig`
| field | type | required | default value | note |
| ---------------- | -------- | ----------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `authorizeUri` | `string` | Yes | | The authorize URI on the authorization server is where an OpenID Connect flow starts. |
| `redirect_uri` | `string` | Yes | | The redirect URI tells the issuer where to redirect the browser back to when the flow is done. |
| `client_id` | `string` | Yes | | Every client (website or mobile app) is identified by a client ID. The client ID is a public value that does not have to be protected. |
| `scope` | `string` | Yes | | Clients can request additional information or permissions via scopes. The openid scope is the only required scope. |
| `response_type` | `string` | No | `code` | The authorization server will respond with a code, which the client can exchange for tokens on a secure channel. |
| `nonce` | `string` | No | | A nonce (or number used once) is a random value that is used to prevent replay attacks. |
| `state` | `string` | Recommanded | | The state is an optional value that is carried through the whole flow and returned to the client. Random value will be created if not provided. |
| `acr_values` | `string` | No | | Requested Authentication Context Class Reference values |
| `claims` | `string` | No | | The Client can obtain Claims about the End-User and the Authentication event. For more detail check [Claims](https://openid.net/specs/openid-connect-core-1_0.html#Claims). |
| `claims_locales` | `string` | No | | End-User's preferred languages and scripts for Claims being returned. |
| `ui_locales` | `string` | No | | End-User's preferred languages and scripts for the user interface |
| `display` | `string` | No | | ASCII string value that specifies how the Authorization Server displays the authentication and consent user interface pages to the end user. Allowed values: `page` `popup` `touch` `wap` |
| `max_age` | `string` | No | | Maximum Authentication Age. This specifies the allowable elapsed time in seconds since the last time the end user was actively authenticated by the OP. |
| `prompt` | `string` | No | | Space delimited case-sensitive list of ASCII string values that specifies whether the Authorization Server prompts the End-User for re-authentication and consent. Allowed values: `none` `login` `consent` `select_account` |
### Prop `buttonConfig`
| field | type | valid values | default value | note |
| ------------- | -------- | ---------------------------------------------------- | ---------------------- | ------------------------------------------ |
| `type` | `string` | (“standard”, “icon”) | "standard" | The button type: icon, or standard button. |
| `theme` | `string` | (“outline”, “filled_blue”, “filled_black”, “custom”) | “outline” | The button theme. |
| `shape` | `string` | (“sharp_edges”, “soft_edges”, “rounded_edges”) | “sharp_edges” | The button shape. |
| `labelText` | `string` | | “Sign in with Esignet” | The button text. |
| `logoPath` | `string` | | esignet logo | Path to the id provider’s logo |
| `width` | `number` | | 400px | The button width, in pixels |
| `background` | `string` | | | Background property of esignet button |
| `textColor` | `string` | | | Color of label text |
| `borderColor` | `string` | | | Border color of esignet button |
| `borderWidth` | `string` | | | Border width of esignet button |
| `font` | `string` | | | font of the label text |
| `fontFamily` | `string` | | | font family of the label text |
| `customStyle` | `string` | | | Custom styling option |
## Usage
```js
# using import
import { SignInWithEsignet } from "sign-in-with-esignet";
```
## Example
React JS
```js
//configuration for Open id connect
useEffect(() => {
SignInWithEsignet({
oidcConfig: {
authorizeUri: "https://esignet.dev.mosip.net/authorize",
redirect_uri: "https://healthservices.dev.mosip.net/userprofile",
client_id: "88Vjt34c5Twz1oJ",
scope: "openid profile",
},
buttonConfig: {
shape: "soft_edges",
theme: "filled_orange",
},
signInElement: document.getElementById("sign-in-with-esignet"),
});
}, []);
export default function MyComponent() {
return (
<div id="sign-in-with-esignet"></div>
);
}
/>;
```
HTML
```HTML
<!DOCTYPE html>
<html>
<body>
<script type="module">
import { SignInWithEsignet } from "<signin button JS url>";
window.onload = function () {
SignInWithEsignet({
oidcConfig: {
authorizeUri: "https://esignet.dev.mosip.net/authorize",
redirect_uri: "https://healthservices.dev.mosip.net/userprofile",
client_id: "88Vjt34c5Twz1oJ",
scope: "openid profile",
},
buttonConfig: {
shape: "soft_edges",
theme: "filled_orange",
},
signInElement: document.getElementById("sign-in-with-esignet"),
});
};
</script>
<div id="sign-in-with-esignet"></div>
</body>
</html>
/>;
```