Socket
Socket
Sign inDemoInstall

oracle-apex-oauth

Package Overview
Dependencies
109
Maintainers
1
Versions
7
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    oracle-apex-oauth

OAuth library for apex.oracle.com.


Version published
Maintainers
1
Install size
5.20 MB
Created

Readme

Source

Go to English README

概要

apex.oracle.comのRESTful ServicesでOAuth2.0で保護されたAPIにNodeアプリからアクセスするためのnpm packageです。

インストール

$ npm install oracle-apex-oauth --save

利用方法

oracle-apex-oauthはexpress-sessionパッケージでセッション管理をすることが前提となっています。したがってまずexpress-sessionをインポートし、適当な設定とともにマウントします。

const session = require('express-session');

app.use(session({
    secret: 'あなたの秘密鍵', // セッションID cookieに署名するための秘密鍵。任意の文字列でOKです。
    resave: false,
    saveUninitialized: false
}));

次に、認証を開始したいパスにoracle-apex-oauthをマウントします。 下記の例では/oauthにアクセスすると認証が開始されます。

const oauth = require('oracle-apex-oauth');

app.use('/oauth', oauth({
    client_id: 'あたたのCLIENT ID', // 必須
    client_secret: 'あなたのCLIENT SECRET', // 必須
    workspace: 'あなたのAPEX WORKSPACE', // 必須
    flow: 'code', // オプション codeまたはimplicit デフォルトはcode
    login_url: '/', // オプション トークン取得後にリダクレクトされるURL
    logout_url: '/' // オプション ログアウト(トークン削除)後にリダイレクトされるURL
}));

CLIENT_ID, CLIENT_SECRETは https://apex.oracle.com/pls/apex/あなたのワークスペース/ui/oauth2/clients/ でClientを登録することで作成できます。

認証が成功すると、アクセストークンはセッションから取得できます。

app.get('/', function(req, res, next){
    if (req.session.oauth){
        res.json(req.session.oauth);
    } else {
        res.send('No Token.');
    }
});

アクセストークンには期限が設定されていますが、Refreshトークンを使って延長することができます。 延長するには、/oauthを認証開始パスに設定した場合は/oauth/refreshにアクセスします。

また、アクセストークンはサーバー側のセッション(express-session)に格納されていますが、これを削除(ログアウト)するには、/oauthを認証開始パスに設定した場合には/oauth/logoutにアクセスします。ただし、この操作は単にNodeの実行環境からトークン情報を削除するだけで、apex.oracle.com側では依然として削除したトークンは有効です。

また、oracle-apex-oauthはトークンの格納先としてexpress-sessionのデフォルトであるMemoryStoreを使用していますが、これは開発目的専用のストレージです。本番環境に適用する場合は下記の例のようにこのストレージを他のストレージ実装に変更する必要があります。

const session = require('express-session');
const mongo = require('connect-mongo')(session);
const store = new mongo({ url: 'YOUR_MONGO_URI' });

app.use(session({
    secret: 'YOUR_SECRET_KEY',
    resave: false,
    saveUninitialized: false,
    store: store // Added
}));

上の例ではMongoDBをストレージとして使用しています。

Keywords

FAQs

Last updated on 08 Jan 2017

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc