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サーバー設定との互換性を確保し、認証プロセスを簡素化することができます。
