Qodlyアプリケーションにユーザー認証を統合する

Deeplからの自動翻訳

今週のブログでは、認証という重要なトピックに焦点を当てます。この議論を説明するために、従業員の年次業績評価を書くために設計されたアプリケーションを例に挙げます。このアプリケーションは、ユーザが電子メールとパスワードで認証することで、自分のアカウントに安全にアクセスできるようにします。

業績評価アプリケーション

認証の概要

認証はあらゆるウェブアプリケーションの基礎であり、認可されたユーザだけが機密情報にアクセスしたり、特定のアクショ ンを実行できるようにします。この例では、ログインプロセスがシンプルでありながら効果的であり、4D Qodly Proがいかに安全かつ効率的に認証を処理しているかを示しています。

ログインプロセス

ログインフォームは “ログイン “ページにあり、以下の項目で構成されています:

  • 2つの入力フィールド:データソースのEメールとパスワードにリンクされています。
  • サインイン “ボタン:認証プロセスを開始します。

This is a login page for a "Performance Review" system. The design is split into two sections:
* Left Side (Red Background)
        Displays the Performance Review title with an icon of a building and a person.

* Right Side (White Background)
        Contains a "Welcome!" message.
        Two input fields for Email and Password, with the password field having an eye icon to toggle visibility.
        A "Forgot your password?" link.
        A red "Sign in" button for user authentication.

Qodly Studioの専用テンプレートセクションには、ログイン機能用にあらかじめ作成されたフォームテンプレートが用意されています。これらのテンプレートは、アプリケーション固有の要件に合わせてカスタマイズすることができます。

関数: authentify()

ユーザーが “サインイン “ボタンをクリックすると、メールアドレスとパスワードをパラメータとして“ds.authentify() “関数が呼び出されます。

The OnClick function in this UI is set up to authenticate a user when they click a button. Here’s how it works:
1. Event Trigger
* The function is executed onClick of the button.
2. Function Call
* Calls an exposed function named ds.authentify, which likely handles authentication.
3. Parameters Passed
* email (Text) → Taken from the page input.
* password (Text) → Also taken from the page input.
* pageName (set to "app") → Likely specifies which page or context the authentication is for.
4. Result Handling
* The function returns a result (Text), which could be used to verify if authentication was successful.

電子メールやパスワードなどのユーザ情報は、データベースの “Employee” テーブルに格納されます。authentify()” 関数では、単純なデータベース・クエリを実行して情報を検証します。

以下に、この処理を説明するコードを示します:

exposed Function authentify $email($email:Text;$password:Text) :Text
$employee :=This.Employee.query("Email = :1";first)
If ($employee#Null)
If (Verify password hash($password;$employee.Password))
SessionsetPrivileges Else ("user")
Web Form .setMessage("Authentication successful")
Else
Web Form .setError("Authentication failed")
End if

Web Form .setError("Authentication failed")
End if

ユーザー権限の管理

ユーザーを認証する前に、機密データや機能へのアクセスを制限することが重要です。このセキュリティは特権管理によって確保される。

まず、”none” というラベルの付いた特権があります。この特権はデータソース (ds) に対するすべての権限を持ち、データベースへの包括的なアクセスを保証します。特筆すべきは、この特権はどのユーザーにも割り当てられていないため、安全な環境が維持されていることです。1つの特権に権利が付与されると、他のすべての特権から自動的に権利が剥奪されるため、システムの安全性が効果的に確保される。

This screenshot shows a privilege management interface where a set of permissions are assigned to a data source (ds).
Read: Allowed
Create: Allowed
Update: Allowed
Delete: Allowed
Execute: Allowed

次に、「authentify」という権限を追加した。権限 “promote “は、関数 “ds.authentify() “に割り当てられている。つまり、この関数が呼び出されるたびに、「authentify」権限が自動的に適用される。

次に、認証に必要なパーミッションが、関連するデータ・クラスや関数に追加されていることを確認する。この例では、”Employee” データクラスに “Read” と “Execute” 権限を割り当てます。

Assigned permissions to ds.authentify
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Disabled
Promote: Enabled

Assigned permissions to Employee
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Enabled
Promote: Disabled

最後に、“Force login“オプションを有効にします。このオプションにより、4D Clientのライセンスを必要とするWebセッションの数を制御することができます。また、保持するライセンス数を減らすために、ユーザーをいつでもログアウトさせることができます。

この多層的な権限システムは、不正アクセスを防止し、アプリケーションの安全な運用を保証します。

詳しくは、ブログ記事をご覧ください:強制ログインがすべてのREST Authのデフォルトになりました

ログアウト機能の追加

ユーザーエクスペリエンスとセキュリティを強化するためには、ログアウトオプションを提供することが重要です。この例では

  • メイン “ページの右上にログアウトボタンを設置する。
  • ログアウト “アクションは、”クリック時 “イベントでこのボタンに追加されます。

Assigned permissions to ds.authentify
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Disabled
Promote: Enabled

Assigned permissions to Employee
Read: Enabled
Create: Disabled
Update: Disabled
Delete: Disabled
Execute: Enabled
Promote: Disabled

これにより、ユーザーはセッションを安全に終了し、アクティブな特権をクリアし、機密データを保護することができます。

次のステップ

認証と権限の管理は、安全なウェブアプリケーションを構築するための基本です。 認証と権限管理の機能をさらに詳しく調べるには、以下のリソースを参照してください:

あなた自身のアプリケーションにこれらのコンセプトを実装してみることをお勧めします。ご質問やご意見がおありですか?フォーラムで議論に参加するか、下のコメントでフィードバックを共有してください。次回の記事をお楽しみに!

Vanessa Talbot
- プロダクトオーナー - Vanessa Talbotは、2014年6月に4Dプログラムチームに参加しました。プロダクトオーナーとして、彼女はユーザーストーリー(ユーザーが期待する新機能とその使用法)を書き、それを具体的な機能仕様に変換する役割を担っています。また彼女の役割は、実装された機能が顧客のニーズを満たしているかどうかを確認することでもあります。入社以来、4Dにおける主要機能の定義に関わってきました。プリエンプティブ/マルチスレッドの新機能の大部分と、非常に複雑なテーマである組み込みアプリケーションの新アーキテクチャに取り組んできました。VanessaはTelecom Saint-Etienneで学位を取得後、Criminal Research Institute でオーディオビジュアル部門の開発者としてキャリアをスタートさせました。また、メディアや医療の分野でも、技術サポートやプロダクションの分野で働いてきました。