Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/oktadev/okta-node-rest-api-example
Simple REST API with Node and OAuth 2.0
https://github.com/oktadev/okta-node-rest-api-example
javascript nodejs oauth2 rest rest-api
Last synced: about 9 hours ago
JSON representation
Simple REST API with Node and OAuth 2.0
- Host: GitHub
- URL: https://github.com/oktadev/okta-node-rest-api-example
- Owner: oktadev
- License: apache-2.0
- Created: 2018-08-17T14:16:23.000Z (about 6 years ago)
- Default Branch: main
- Last Pushed: 2023-03-13T22:40:48.000Z (over 1 year ago)
- Last Synced: 2024-04-15T15:55:23.755Z (7 months ago)
- Topics: javascript, nodejs, oauth2, rest, rest-api
- Language: JavaScript
- Homepage: https://developer.okta.com/blog/2018/08/21/build-secure-rest-api-with-node
- Size: 239 KB
- Stars: 16
- Watchers: 8
- Forks: 7
- Open Issues: 9
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Simple REST API with Node and OAuth 2.0
This example app shows how to create a REST API in Node and secure it with OAuth 2.0 Client Credentials using Okta. This also has an example client written as a CLI that can authenticate with Okta and use the REST API.
## Getting Started
### Install Dependencies
After cloning the repository, simply run `npm install` to install the dependencies.
### Save Environment Variables
If you don't have one already, [sign up for a free Okta Developer account](https://www.okta.com/developer/signup/). Log in to your developer console to get the following information.
Create a file named `.env` that has the following variables, all obtained from your Okta developer console:
* **ISSUER**
Log in to your developer console and navigate to **API** > **Authorization Servers**. Copy the `Issuer URI` for the `default` server.
* **SCOPE**
Click on the word `default` to get details about the authorization server. Go to the **Scopes** tab and click the **Add Scope** button. Give it a name and optionally a description. The example app is for a parts manager, so for example you could name it `parts_manager`.
* **CLIENT_ID**
Navigate to **Applications**, then click the **Add Application** button. Select **Service**, then click **Next**. Choose a name then click **Done**. The **Client ID** is shown on the next page.
* **CLIENT_SECRET**
The **Client Secret** is on the same page as the **Client ID**
When you're done, your `.env` file should look something like this:
```bash
ISSUER=https://dev-123456.oktapreview.com/oauth2/default
SCOPE=parts_manager
CLIENT_ID=0123456789abcdefghij
CLIENT_SECRET=0123456789abcdefghijklmnopqrstuvwxyz0123
```### Run the Server
To run the server, run `npm start` from the terminal.
### Run the Client
To make secure API requests, you'll need to use the client located at `client.js`.
**USAGE**
> **node client** url \[method\] \[jsonString\]
* **url** *(required)*: the path to your server along with the endpoint (e.g. `http://localhost:3000/parts`)
* **method** *(optional)*: the HTTP verb for the REST call (e.g. `delete` or `post`). Defaults to `get`
* **jsonString** *(optional)*: stringified JSON data for use in `put` or `post` calls (e.g. `'{"partNumber":"asdf-1234"}'`)**EXAMPLES**
* `node client http://localhost:3000/parts`: get a list of all parts
* `node client http://localhost:3000/parts post '{"partNumber":"asdf-1234"}'`: creates a new part with part number `asdf-1234`
* `node client http://localhost:3000/parts/1`: gets details about the part with and `id` of `1`
* `node client http://localhost:3000/parts/7 put '{"name":"A single dairy farm"}'`: updates the `name` field of the part with an `id` of `7`
* `node client http://localhost:3000/parts/11 delete`: deletes the part with an `id` of `11`## License
Apache 2.0, see [LICENSE](LICENSE).