DigitaLNX

DigitaLNXは統一ログインで業務を効率化するシステムです。SSO、API連携、会員制コンテンツ化を簡単に導入が可能です。多様なアプリケーションを統合し、操作を自動化します。利便性向上と収益化を支援し、柔軟なカスタマイズも可能。すべてのビジネスに新たな価値を提供します。

DigitaLNX API 連携ガイド

本書は、DigitaLNX と外部サイト・アプリケーションを連携するための公開向けドキュメントです。

概要

DigitaLNX では、サイト利用者の認証・ユーザー情報の取得・メッセージ送信などを REST API およびブラウザサインインで提供します。

項目内容
API ベース URLhttps://lnx.digital/api/
レスポンス形式JSON
Content-Type多くのエンドポイントは text/javascript; charset=utf-8 を返します
エラー表現HTTP 200 のまま JSON 内の result / errorCode で成功・失敗を判定してください

用語

用語説明
clientIdサイトまたはグループを識別する ID。API 呼び出しやサインイン URL に指定します
siteCodeサイト単位の clientId と同義で使われる場合があります
グループ1 つのサイト配下の区画(例: 別サービス・別アプリ)。グループごとに clientId が割り当てられます
コールバック URLブラウザサインイン成功後、利用者を戻す先 URL。DigitaLNX コンソールの「API連携設定」で登録します
userTokenサインイン成功後にコールバック URL へ付与される認証トークン
view コード(subID)サイト内でユーザーを識別するコード。トークン検証 API のレスポンスで取得します

連携パターン

パターン A: ブラウザサインイン + コールバック(推奨)

外部サイトから DigitaLNX のログイン画面へ誘導し、認証後に自サイトへ戻す方式です。

1. 利用者を DigitaLNX サインイン URL へリダイレクト
2. 利用者が ID / パスワードでログイン
3. 登録済みコールバック URL へリダイレクト(clientID と token が付与される)
4. 自サイト側で token を検証 API に送り、利用者を特定
5. 自サイトのセッションを開始

グループ clientId でサインインした場合、DigitaLNX 側の管理コンソール用セッションは作成されません。必ずコールバック先で userToken を受け取り、自サイト側でログイン状態を管理してください。

パターン B: API 直接認証

サーバーまたはクライアントアプリから、メールアドレスとパスワードを API に送信して認証する方式です。

  • JSON 認証: POST /api/member/auth/
  • フォーム POST 認証: POST /api/member/authKaraage/

ブラウザサインイン

サインイン URL

https://lnx.digital/auth/signin/?clientId=<clientId>
クエリ必須説明
clientIdはいサイトまたはグループの clientId
redirect任意ログイン後の遷移先(サイト種別により利用されない場合があります)

注意: URL パスは すべて小文字 の signin を使用してください。signIn(大文字 I)は Linux サーバー上では 404 になります。

サインイン成功後のリダイレクト(グループ clientId)

コールバック URL が登録されている場合:

https://<your-site>/path/to/callback?clientID=<clientId>&token=<userToken>

コールバック URL が未登録の場合、システム既定の URL が使われます。連携サイトでは 必ず DigitaLNX コンソールでコールバック URL を設定 してください。

コールバック URL の設定

  1. DigitaLNX 管理コンソールにログイン
  2. 対象サイトの サイト詳細 を開く
  3. API連携設定 で、該当 clientId のコールバック URL を登録

コールバック URL は http:// または https:// で始まる有効な URL である必要があります。


エンドポイント一覧

会員: 認証(JSON)

URL: POST /api/member/auth/

リクエストヘッダー: Content-Type: application/json

パラメータ必須型説明
domainはいstringサイト識別に使用するドメイン
codeはいstringサイト識別に使用するコード
emailはいstringログイン ID(メールアドレス)
passwordはいstringパスワード

レスポンス

フィールド説明
actionsignin
resultsuccess または error
errorCode失敗時の理由コード
code成功時: view 用 ID
nextURLサイト登録用コールバック URL(未設定時は空)

主な errorCode

errorCode意味
PostFieldError必須パラメータ不足
invalidDomainドメインが不正
invalidKeyサイトコードが不正
CannotSignIn認証失敗

会員: 認証(フォーム POST)

URL: POST /api/member/authKaraage/

リクエスト: application/x-www-form-urlencoded または multipart/form-data

パラメータ必須型説明
siteIDはいstringグループの clientId
loginIDはいstringログイン ID
passwordはいstringパスワード

レスポンス

フィールド説明
actionsingin
resultsuccess または error
errorCode失敗理由
code成功時: view 用 ID
nextURL未使用(空)

主な errorCode

errorCode意味
PostFieldError1〜6必須パラメータ不足
SiteCodeError3サイトコード不正
CannotSignIn認証失敗
NotRegist未登録

会員: トークン検証

ブラウザサインイン後に受け取った token を検証する API です。コールバック受け口での必須処理 です。

URL: POST /api/member/groupUserAuth/

リクエスト: application/x-www-form-urlencoded または multipart/form-data

パラメータ必須型説明
siteCodeはいstringclientId(コールバックの clientID と同じ値)
userTokenはいstringコールバックで受け取った token

レスポンス

フィールド説明
result成功時 OK、失敗時 error
errorCode失敗理由
subID成功時: ユーザーの view コード

主な errorCode

errorCode意味
siteCodeIsRequiredsiteCode 未指定
tokenRequireduserToken 未指定
inValidTokenトークンが無効または期限切れ
inValidCode-<siteID>_<siteCode>clientId がトークンと一致しない

会員: メールアドレス取得

URL: POST /api/member/user/

リクエスト: application/x-www-form-urlencoded または multipart/form-data

パラメータ必須型説明
siteCodeはいstringサイト clientId
userSubはいstringユーザーの view コード

レスポンス

フィールド説明
result成功時 OK、失敗時 error
errorCode失敗理由
mailAddress成功時: メールアドレス

会員: メッセージ送信

URL: POST /api/member/sendMessage/

リクエストヘッダー: Content-Type: application/json

パラメータ必須型説明
codeはいstringサイト clientId
subIDはいstringユーザーの view コード
subjectはいstring件名
messageはいstring本文

レスポンス

フィールド説明
actionsendMessage
resultsuccess または error
errorCode失敗理由

サイト管理者向け JWT API

DigitaLNX 管理コンソールや、サーバー間連携で JWT 認証を利用する場合に使用します。

JWT: ログイン

URL: POST /api/jwt/loginConsole.php

リクエストヘッダー: Content-Type: application/json

パラメータ必須型説明
clientIdはいstringサイト / グループの clientId
loginIDはいstringログイン ID
passwordはいstringパスワード
redirectURL任意stringログイン後の遷移先

レスポンス(成功時)

フィールド説明
resultsuccess
accessTokenJWT アクセストークン
refreshTokenリフレッシュトークン
expiresInアクセストークン有効秒数(既定 900 秒)
tokenTypeBearer
nextPage遷移先 URL

主な errorCode

errorCode意味
PostFieldError必須パラメータ不足
needSignUpアカウント未登録
invalidKeyclientId 不正

JWT: トークン更新

URL: POST /api/jwt/refresh.php

パラメータ必須型説明
refreshTokenはいstring前回取得したリフレッシュトークン

成功時、新しい accessToken と refreshToken が返ります。旧リフレッシュトークンは無効になります。

主な errorCode: refreshTokenRequired, invalid_refresh, refresh_reuse, refresh_expired


JWT: トークン失効

URL: POST /api/jwt/revoke.php

refreshToken または Authorization: Bearer <accessToken> の少なくとも一方が必要です。


JWT: パスワード変更

URL: POST /api/jwt/changePassword.php

ヘッダー: Authorization: Bearer <accessToken>(必須)

パラメータ必須型説明
currentPasswordはいstring現パスワード
newPasswordはいstring新パスワード

レスポンス例

ブラウザサインイン後のコールバック(自サイト側で受信)

GET https://example.com/auth/callback?clientID=6a4744635855bUTI1&token=abc123...

自サイトでは token を groupUserAuth API で検証してください。

トークン検証成功

{
  "result": "OK",
  "errorCode": "",
  "subID": "view-code-example"
}

会員認証成功(JSON API)

{
  "action": "signin",
  "result": "success",
  "errorCode": "",
  "code": "<viewID>",
  "nextURL": ""
}

JWT ログイン成功

{
  "action": "checkMailExists",
  "result": "success",
  "state": "",
  "errorCode": "",
  "nextPage": "https://lnx.digital/console/dashboard/",
  "accessToken": "<JWT>",
  "refreshToken": "<opaque>",
  "expiresIn": 900,
  "tokenType": "Bearer"
}

連携時のトラブルシューティング

サインイン後に再びログイン画面へ戻る

確認項目対応
コールバック URLDigitaLNX コンソールの API連携設定で正しい URL が登録されているか
clientId の種類グループ clientId の場合、DigitaLNX コンソール用セッションは作られません
トークン検証コールバック受け口で groupUserAuth を呼び出しているか
URL の大文字小文字サインイン URL は /auth/signin/(小文字)を使用する

API で PostFieldError が返る

  • JSON API には Content-Type: application/json と JSON 本文を送る
  • フォーム API には application/x-www-form-urlencoded を使う
  • パラメータ名の大文字小文字を表のとおりに指定する

inValidToken / inValidCode が返る

  • コールバックの clientID と siteCode が一致しているか
  • token を URL デコードしてから API に渡しているか
  • トークンの有効期限切れ(再ログインが必要)

JWT の invalid_access_token

  • Authorization: Bearer <JWT> 形式でヘッダーを送る
  • 期限切れの場合は refresh.php で更新する

サポート

API 連携設定(clientId・コールバック URL)は、DigitaLNX 管理コンソールの サイト詳細 → API連携設定 から確認・編集できます。

技術的なお問い合わせは、DigitaLNX サポート窓口までご連絡ください。


API 接続ガイド

本書は first/api 配下の実装に基づく接続手順・パラメータ・レスポンス・エラー確認のまとめです。OpenAPI 定義はリポジトリ内にありません。

共通事項

項目内容
ベースURLデプロイ先のオリジンに続けて /api/...(例: https://<ホスト>/api/member/auth/)
旧パス/api/auth/ 等は /api/member/... へのシムとして併存する場合があります
レスポンス形式本文は JSON。多くのエンドポイントは Content-Type: text/javascript; charset=utf-8 を返します
HTTPメソッド実装は php://input または $_POST / $_GET ベースです。クライアントは各表の推奨メソッドで送ってください

環境変数(JWT / OIDC)

変数名必須説明
JWT_SECRETJWT利用時は必須アクセストークン署名用(十分に長いランダム文字列)
JWT_ISS任意issuer。未設定時は https://lnx.digital
JWT_ACCESS_TTL任意アクセストークン有効秒数(数字のみ)。未設定時は 900
JWT_REFRESH_TTL任意リフレッシュトークン有効秒数。未設定時は 1209600(14日相当)
OIDC_ISSUEROIDC利用時は必須IdP の issuer
OIDC_CLIENT_IDOIDC利用時は必須クライアントID
OIDC_REDIRECT_URIOIDC利用時は必須リダイレクトURI
OIDC_CLIENT_SECRET任意コンフィデンシャルクライアント用
OIDC_SCOPES任意未設定時は openid profile email

アプリ・DB

  • PHP が first をドキュメントルート(またはそのサブパス)として解決できること
  • first/dba/config.php 等による DB 接続が有効であること(会員系・JWT リフレッシュは DB を使用)

接続の流れ(概要)

  1. 会員サイト向け: ドメイン/サイトコードでサイトを特定し、メールとパスワードで認証する(member/auth)。成功時は code に view 用 ID が入ります。
  2. コンソール(管理)向け JWT: JSON で clientId / loginID / password を jwt/loginConsole.php に送り、accessToken と refreshToken を取得します。
  3. トークン更新: refreshToken を jwt/refresh.php に POST してローテーションします。
  4. 失効: refreshToken または Authorization: Bearer <accessToken> を jwt/revoke.php に渡します。
  5. OIDC: oidc/start.php で authorizeUrl を取得 → ブラウザで IdP に遷移 → コールバック後に oidc/callback.php に code / state / stateToken を POST して JWT を取得します。

エンドポイント一覧とパラメータ定義表

会員: 認証(JSON)

URL: POST /api/member/auth/(旧: POST /api/auth/)

リクエストヘッダー: Content-Type: application/json

パラメータ必須型説明
domainはいstringサイト識別に使用するドメイン
codeはいstringサイト識別に使用するコード
emailはいstringログインID(メール)
passwordはいstringパスワード

レスポンスフィールド

フィールド説明
action固定で signin
resultsuccess または error
errorCode失敗時の理由コード(成功時は空文字の場合あり)
code成功時: view 用 ID(トークン文字列)。失敗時は空
nextURLサイト登録用コールバック URL(無ければ空文字)

会員: からあげ等(フォームPOST)

URL: POST /api/member/authKaraage/(旧: POST /api/authKaraage/)

リクエスト: application/x-www-form-urlencoded または multipart/form-data($_POST)

パラメータ必須型説明
siteIDはいstringクライアント側サイトコード(グループ解決に使用)
loginIDはいstringログインID
passwordはいstringパスワード

レスポンスフィールド

フィールド説明
action実装上 singin(typo)
resultsuccess または error
errorCode失敗理由(PostFieldError1〜6, SiteCodeError3, CannotSignIn, NotRegist 等)
code成功時: view 用 ID
nextURL現状ほぼ未使用(空)

会員: メール取得

URL: POST /api/member/user/(旧: POST /api/user/)

パラメータ必須型説明
siteCodeはいstringサイトクライアントコード
userSubはいstringユーザーの view コード

レスポンスフィールド

フィールド説明
result成功時 OK、失敗時 error
errorCode失敗理由コード
mailAddress成功時: メールアドレス

会員: グループユーザートークン検証

URL: POST /api/member/groupUserAuth/(旧: POST /api/groupUserAuth/)

パラメータ必須型説明
siteCodeはいstringサイトクライアントコード
userTokenはいstring検証するトークン

レスポンスフィールド

フィールド説明
result成功時 OK、失敗時 error
errorCode失敗理由(inValidToken, tokenRequired, siteCodeIsRequired, inValidCode-<siteID>_<siteCode> 等)
subID成功時: view コード

会員: メッセージ送信(JSON)

URL: POST /api/member/sendMessage/(旧: POST /api/sendMessage/)

リクエストヘッダー: Content-Type: application/json

パラメータ必須型説明
codeはいstringサイトクライアントコード(checkSiteByClientID)
subIDはいstringユーザーの view コード
subjectはいstring件名
messageはいstring本文

レスポンスフィールド

フィールド説明
actionsendMessage
resultsuccess または error
errorCode失敗理由
code, nextURL互換用(送信APIでは実質未使用)

JWT: コンソールログイン

URL: POST /api/jwt/loginConsole.php または POST /api/jwt/login.php
(実体: first/api/admin/jwt/loginConsole.php)

リクエストヘッダー: Content-Type: application/json

パラメータ必須型説明
clientIdはいstringdigitalnx またはサイト/グループのクライアントID
loginIDはいstringメール等のログインID
passwordはいstringパスワード
redirectURL任意stringログイン後の遷移先。notDirected の場合は既定ダッシュボード扱い

レスポンスフィールド

フィールド説明
actioncheckMailExists
resultsuccess または error
state現状は空文字で返る実装
errorCode失敗時コード
nextPageコンソール/コールバック用の次URL(クライアント種別により内容が異なる)
accessToken成功時のみ: JWT 文字列
refreshToken成功時のみ: 不透明リフレッシュトークン
expiresIn成功時のみ: アクセストークンの有効秒数
tokenType成功時: Bearer

主な errorCode(実装より)

errorCode意味
PostFieldErrorclientId / loginID / password の不足
needSignUpメイン未登録
invalidKeyサイトID解決失敗
JWT_SECRET_UNSET環境変数 JWT_SECRET 未設定
CannotResolveUser認証は成功したがユーザーIDを解決できない(グループ等の分岐)

※ 認証失敗で result が error かつ errorCode が空のケースがあります(実装依存)。


JWT: リフレッシュ

URL: POST /api/jwt/refresh.php

リクエストヘッダー: Content-Type: application/json

パラメータ必須型説明
refreshTokenはいstringログインまたは直前の refresh で得た生トークン

レスポンスフィールド

フィールド説明
actionjwtRefresh
resultsuccess または error
errorCode失敗理由
accessToken, refreshToken, expiresIn, tokenType成功時のみ(refreshToken はローテーションされ新しい値)

errorCode(refresh)

errorCode意味
PostFieldError初期状態(未使用に近い)
refreshTokenRequiredrefreshToken が空
JWT_SECRET_UNSETJWT_SECRET 未設定
invalid_refreshトークンがDBに存在しない
refresh_reuse失効済みトークンの再利用検知
refresh_expired期限切れ

JWT: 失効

URL: POST /api/jwt/revoke.php

リクエストヘッダー: Content-Type: application/json
任意ヘッダー: Authorization: Bearer <accessToken>

パラメータ必須型説明
refreshToken条件付きstring指定時は該当ファミリーを失効

ルール: refreshToken と Bearer の少なくとも一方が必要。両方指定可能。

レスポンスフィールド

フィールド説明
actionjwtRevoke
result通常 success、パラメータ不正やトークン不正で error
errorCode失敗時
revokednone / family / user_all / family_and_user

errorCode

errorCode意味
refreshToken_or_bearer_required両方とも欠落
invalid_refresh_tokenrefresh のみ指定したがハッシュ不一致
invalid_access_tokenBearer が無効
JWT_SECRET_UNSETBearer 検証時にシークレット未設定

JWT: パスワード変更

URL: POST /api/jwt/changePassword.php

リクエストヘッダー:

  • Content-Type: application/json
  • Authorization: Bearer <accessToken>(必須)
パラメータ必須型説明
currentPasswordはいstring現パスワード
newPasswordはいstring新パスワード(現パスワードと同一不可)

レスポンスフィールド

フィールド説明
actionjwtChangePassword
resultsuccess または error
errorCode失敗理由

errorCode

errorCode意味
bearer_requiredAuthorization 欠落
PostFieldErrorパスワード項目欠落
password_unchanged新旧が同一
JWT_SECRET_UNSETシークレット未設定
invalid_access_tokenJWT 不正・期限切れ等
auth_failed現パスワード不一致・ユーザー解決失敗・更新検証失敗

成功時は当該ユーザーの全リフレッシュトークンが失効します。


OIDC: 開始

URL: POST /api/jwt/oidc/start.php

パラメータ必須型説明
clientIdはいstringJWT ログインと同様のクライアントID
redirectURL任意stringログイン完了後の nextPage に使われる候補

レスポンス(成功時)

フィールド説明
actionoidcStart
resultsuccess
stateIdP に渡す state
stateTokenサーバ側検証用トークン(callback とセットで使用)
authorizeUrlブラウザで開く認可エンドポイントの完全 URL
expiresIn300(state 関連の有効目安・秒)

errorCode: oidcDisabled, PostFieldError, oidcStartFailed


OIDC: コールバック(トークン交換)

URL: POST /api/jwt/oidc/callback.php

パラメータ必須型説明
codeはいstringIdP からの認可コード
stateはいstringstart 時に発行した state
stateTokenはいstringstart 時に発行した stateToken

成功時は JWT ログインと同様に accessToken, refreshToken, expiresIn, tokenType, nextPage が返ります。

errorCode: oidcDisabled, PostFieldError, JWT_SECRET_UNSET, ユーザーマッピング失敗時は resolve_oidc_admin_user の結果、oidcCallbackFailed 等


管理: メールテスト

URL: GET /api/admin/test.php(旧: GET /api/test.php)

パラメータ必須型説明
mailはいstringクエリ ?mail=

レスポンス: Content-Type: application/json — ユーザー情報の連想配列、または {"error":"not found"}。欠落時は HTTP 400 と {"error":"Specify mail address: ?mail="}。


レスポンス例

会員認証成功

{
  "action": "signin",
  "result": "success",
  "errorCode": "",
  "code": "<viewIDトークン>",
  "nextURL": ""
}

会員認証失敗(ドメイン不正)

{
  "action": "signin",
  "result": "error",
  "errorCode": "invalidDomain",
  "code": "",
  "nextURL": ""
}

JWT ログイン成功

{
  "action": "checkMailExists",
  "result": "success",
  "state": "",
  "errorCode": "",
  "nextPage": "https://lnx.digital/console/dashboard/",
  "accessToken": "<JWT>",
  "refreshToken": "<opaque>",
  "expiresIn": 900,
  "tokenType": "Bearer"
}

JWT リフレッシュ成功

{
  "action": "jwtRefresh",
  "result": "success",
  "errorCode": "",
  "accessToken": "<新JWT>",
  "refreshToken": "<新opaque>",
  "expiresIn": 900,
  "tokenType": "Bearer"
}

JWT リフレッシュ失敗(期限切れ)

{
  "action": "jwtRefresh",
  "result": "error",
  "errorCode": "refresh_expired",
  "accessToken": "",
  "refreshToken": "",
  "expiresIn": 0,
  "tokenType": "Bearer"
}

会員メール取得成功

{
  "result": "OK",
  "errorCode": "",
  "mailAddress": "user@example.com"
}

OIDC start 成功(概念例)

{
  "action": "oidcStart",
  "result": "success",
  "errorCode": "",
  "state": "<state>",
  "stateToken": "<stateToken>",
  "authorizeUrl": "https://idp.example/authorize?...",
  "expiresIn": 300
}

エラー時の確認手順

1. HTTP ステータスだけ見ていないか

多くの API はエラーでも HTTP 200 のまま JSON で result: error を返します。クライアントは 本文の result / errorCode を必ず解釈してください。

2. 会員系で PostFieldError / siteCodeRequired 等

確認項目対応
JSON API にフォームだけ送っているContent-Type: application/json と JSON 本文(member/auth, member/sendMessage)
member/user に JSON を送っているapplication/x-www-form-urlencoded で siteCode, userSub
必須キーの綴り表の名前と完全一致(大文字小文字含む)

3. invalidDomain / invalidKey(member/auth)

  • domain と code が DB 上のサイト定義と一致するか
  • サイト側の登録・キー配布ミスがないか

4. CannotSignIn / 認証失敗

  • メール・パスワードの誤り、未登録
  • JWT ログインで needSignUp: メイン登録フローが必要

5. JWT_SECRET_UNSET

  • サーバ環境に JWT_SECRET を設定し PHP から getenv('JWT_SECRET') で見えることを確認
  • 設定変更後は PHP-FPM / Apache の再起動が必要な場合あり

6. JWT invalid_access_token / bearer_required

確認項目対応
ヘッダー形式Authorization: Bearer <1行のJWT>(Bearer の前後スペースは実装で許容)
期限切れrefreshToken で jwt/refresh.php を呼び再取得
時刻ずれNTP・サーバ時刻のずれが大きいと検証失敗の原因になり得ます

7. refresh で refresh_reuse / invalid_refresh

  • 同一 refresh を二重送信していないか(ローテーション後は旧トークン無効)
  • 失効・期限切れ後に古いトークンを使っていないか
  • refresh_reuse はセキュリティ上、ファミリー単位で失効が進む実装です。全セッションを切りたい場合は revoke を検討

8. sendMessage で sendFailed

  • AWS SES 等の送信設定・権限・レート制限
  • noMailAddress: ユーザーにメールが未設定

9. OIDC で oidcDisabled / oidcStartFailed / oidcCallbackFailed

  • 必須環境変数が揃っているか(OidcService の要件)
  • OIDC_REDIRECT_URI が IdP 登録と完全一致するか
  • state / stateToken の有効期限(start から 300 秒目安)内に callback しているか
  • IdP の code が一度きりであること(再送不可)

10. 管理テスト API が 400

  • GET で ?mail= を付けているか

参考実装パス

種別パス
会員 APIfirst/api/member/*/index.php
JWT APIfirst/api/admin/jwt/*.php, first/api/admin/jwt/oidc/*.php
公開シムfirst/api/jwt/*.php, first/api/auth/*.php 等
JWT ロジックfirst/lib/JwtService.php, first/models/JwtRefreshModel.php
コンソールログイン解決first/auth/lib/resolveConsoleLogin.php
OIDCfirst/lib/OidcService.php, first/lib/OidcLoginState.php
コンソール向けドキュメント・API設定first/console/siteDetail/(API連携設定ブロック)、first/console/siteDetail/documents/
TOP