4D NetKit: OAuth2.0認証のレスポンス取得に、ホストWebサーバーのポートを使用する

OAuth 2.0認証を 4D NetKit で使用する場合、OAuth 2.0 サーバーが認証結果を返す宛先を示すリダイレクトURI を定義する必要があります。4D 20 R9 では、ホストWebサーバーのアドレスとポートを使って認証結果を取得できるようになりました。この機能強化により、認証プロセスが効率化され、ポートの競合を防ぎ、セキュリティが向上します。

$credential:={}
$credential.name:="Microsoft"   // または "Google
$credential.permission:="signedIn"
$credential.clientId:="bbbxxx"
$credential.redirectURI:="http://127.0.0.1:80/authorize/"
var $provider:=cs.NetKit.OAuth2Provider.new($credential)

cs.NetKit.OAuth2Provider.new($credential) を使用する場合、4D NetKit は指定されたリダイレクトURI に基づいて、ホストWebサーバーと 4D NetKitコンポーネントWebサーバーのどちらを使用するかを決定します。

  • redirectURI のポートと、ホストWebサーバーのポートが一致する場合: 4D NetKit は自動的にホストWebサーバーを使用して認証レスポンスを取得します。

  • ポートが省略された場合: 標準のポートが使用されます:

    • ホストデータベースがデフォルトポート (HTTP はポート80、HTTPS はポート443) で設定されている場合、ホストWebサーバーが使用されます。

    • それ以外の場合は、4D NetKitコンポーネントWebサーバーが使用されます。

  • それ以外の場合: 4D NetKit はデフォルトでコンポーネントWebサーバーを使用します。

HTTPポート = 80 のホストWebサーバー設定に基づくリダイレクトURI の例:

  • 4D ホストポートを使用 → 4D ホストサーバーを使用:

    $param.redirectURI:="http://127.0.0.1:80/authorize/"
  • ポートを省略、デフォルトの HTTPポートは 80 → 4D ホストサーバーを使用:

    $param.redirectURI:="http://127.0.0.1/authorize/"
  • カスタムポートを使用 → 4D NetKit サーバーを使用:

    $param.redirectURI:="http://127.0.0.1:50993/authorize/"

HTTPハンドラーで認証レスポンスを処理する

ホストWebサーバーを認証に使用する場合、デベロッパーはホストデータベースに  HTTPハンドラーを追加する必要があります。これにより、認証レスポンスが適切に受信され、処理されるようになります。

permission=”signedIn” で 4D NetKit がホストWebサーバーを使用する場合、Project/Sources/HTTPHandlers.jsonファイルに以下のハンドラーを追加するべきです:

[
  {
    "class": "NetKit.OAuth2Authorization",
    "method": "getResponse",
    "regexPattern": "/authorize",
    "verbs": "get"
  }
]

まとめ

4D NetKit の新しい OAuth 2.0認証機能拡張を使用することで、デベロッパーは既存のホストWebサーバー設定との互換性を確保し、認証プロセスを簡素化することができます。

Fabrice Mainguené
- Product Owner -Fabrice Mainguenéは、2016年11月に4D Programチームに参加しました。プロダクトオーナーとして、彼はユーザーストーリーを書き、それを機能仕様に変換する役割を担っています。CNAMでコンピュータサイエンスの学士号を取得した後、FabriceはWindev開発者として小さなソフトウェア出版社に入社しました。その後、彼は産業および貿易分野のさまざまな企業で、Windev および Web 開発者として、また新機能の技術アドバイザーとして働きました。