このページは機械翻訳を使用して翻訳されました。元の英語を参照するには、ここをクリックします。
ユーザーに基づいてWebアプリの動作をカスタマイズする
メモ
ユーザーに基づいて Web アプリの動作をカスタマイズする機能は、スタンドアロンの MATLAB® Web App Server™ 製品ではサポートされており、MATLAB Compiler™ に含まれる開発バージョンではサポートされていません。詳細については、MATLAB Web App Server の違いを参照してください。
前提条件
userinfo.json
ファイルの作成
ログインしているユーザーに基づいて、Web アプリの動作をカスタマイズできます。動作をカスタマイズするには:
userinfo.json
という名前のファイルを作成し、サーバーのwebapps_private
フォルダーに配置します。webapps_private
フォルダは次の場所にあります:オペレーティング システム フォルダーの場所 Windows®
%ProgramData%\MathWorks\webapps\R2024a\config\webapps_private
Linux®
/local/MathWorks/webapps/R2024a/config/webapps_private
macOS
/Library/Application Support/MathWorks/webapps/R2024a/config/webapps_private
MATLAB で App Designer を使用して Web アプリを作成するときに、アプリ コードで
compiler.UserInfo
(MATLAB Compiler) 関数を使用して、userinfo.json
ファイルからユーザー固有の詳細を取得します。
userinfo.json
の JSON スキーマは次のとおりです。
{
"version": "<major>.<minor>.<patch>",
"userInfo.doc": "Property values to be fetched during login from IdP",
"userInfo": {
"UserID": "<uid_or_upn>",
"DisplayName": "<user_name_that_is_displayed>",
"Groups": "<group_membership_of_user>",
"<propertyName1>": "<value1>",
"<propertyName2>": "<value2>",
"<propertyName3>": "<value3>",
...
},
"appAccess.doc": "Policy for allowing access to user properties within an app or group of apps",
"appAccess": {
"<appName>": ["<userInfo_propertyName>","<userInfo_propertyName>", ...],
...
"*": "*"
}
}
バージョン:JSON スキーマのバージョンを指定します。R2024a のデフォルト値は
1.0.0
です。userInfo.doc:
userInfo
ブロックの目的を説明するテキスト。ユーザー情報:
userInfo
ブロックには、ユーザーの識別に役立つプロパティ名と値のリストが含まれています。プロパティ名UserID
、DisplayName
、およびGroups
は、すべてのuserinfo.json
ファイルに必要です。必要に応じて、他のプロパティ名と値を含めることができます。プロパティ名と値は、LDAP または OIDC 属性に対応します。たとえば、ユーザー情報の一部として電子メール アドレスを使用する場合は、プロパティ名としてEmail
を指定し、プロパティ値としてEmailAddress
の属性値を指定できます。ユーザーID:ユーザーの ID に対応する LDAP または OIDC 属性タイプをプロパティ値として指定します。
UserID
は必須のプロパティ名です。次に例を示します。"UserID": "uid"
UserID
プロパティ名にプロパティ値として属性タイプを指定しないと、ユーザーの詳細を照会するcompiler.UserInfo
(MATLAB Compiler) は、プロパティ値として<missing>
を返します。表示名:ユーザーの優先名に対応する LDAP または OIDC 属性タイプを指定します。次に例を示します。
"DisplayName": "displayName"
グループ:ユーザーが所属するグループに対応する LDAP または OIDC 属性タイプを指定します。次に例を示します。
"Groups": "groups"
メモ
UserID
、DisplayName
、およびGroups
プロパティ名は、すべてのuserinfo.json
ファイルに必要です。userInfo
ブロックにカスタム プロパティ名を追加し、LDAP または OIDC 属性タイプに基づいてプロパティ値を割り当てることができます。たとえば、ユーザー情報の一部として電子メール アドレスを使用する場合は、プロパティ名としてEmail
を指定し、プロパティ値として LDAP 属性タイプEmailAddress
(または OIDC を使用している場合はmail
) を指定できます。appAccess.doc:
appAccess
ブロックの目的を説明するテキスト。アプリアクセス:
appAccess
ブロックには、サーバー上でホストされているアプリ名に対応するプロパティ名と、userInfo
ブロックのプロパティ名に対応するプロパティ値のリストが含まれています。userInfo
ブロックのプロパティ名の組み合わせを指定して一意のユーザー セットを識別することで、アプリへのアクセスを設定できます。<appName>
:アプリ名をプロパティ名として指定し、userInfo
ブロックのプロパティ名の組み合わせをプロパティ値として指定して、アプリにアクセスできるユーザーのセットを一意に識別します。次に例を示します。"BloodPressure": ["UserID", "Email"]
ヒント
プロパティ名とプロパティ値の両方にアスタリスク (*) ワイルドカード文字を使用して、すべてのユーザーがすべてのアプリにアクセスできることを示すことができます。次に例を示します。
"*": "*"
プロパティ名
WebAppsRole
およびWebAppsDisplayName
は予約されており、userInfo
ブロックでは使用できません。ただし、appAccess
ブロックではプロパティ値として使用できます。次に例を示します。"Mystery": ["UserID", "Email", "WebAppsRole", "WebAppsDisplayName"]
WebAppsRole
はユーザーの役割に対応します:著者とユーザー。詳細については、ロールベースのアクセスを参照してください。WebAppsDisplayName
は、アプリのホームページに表示される名前に対応します。
userInfo
ブロックに変更を加えた場合は、サーバーを再起動する必要があります。詳細については、webapps-restart
を参照してください。
userinfo.json
ファイルと compiler.UserInfo
関数の使用例
次のサンプル userinfo.json
ファイルでは、userInfo
ブロックに必須のプロパティ名 UserID
、DisplayName
、および Groups
が含まれています。さらに、LastName
と Email
という 2 つのカスタム プロパティ名が含まれています。すべてのプロパティ名には、プロパティ値として OIDC 属性が割り当てられます。
appAccess
ブロックには、BloodPressure
、Mortgage
、Mystery
の 3 つのアプリが含まれています。
BloodPressure
アプリへのアクセスは、userInfo
ブロックのUserID
およびDisplayName
プロパティに基づいて制限されます。Mortgage
アプリへのアクセスは、userInfo
ブロックのUserID
およびLastName
プロパティに基づいて制限されます。Mystery
アプリへのアクセスは、UserID
とDisplayName
、および予約済みプロパティ名WebAppsRole
とWebAppsDisplayName
に基づいて制限されます。
{
"version": "1.0.0",
"userInfo.doc": "Property values to be fetched during login from IdP",
"userInfo": {
"UserID": "upn",
"DisplayName": "displayName",
"Groups": "groups",
"LastName": "surname",
"Email": "mail"
},
"appAccess.doc": "Policy for allowing access to user properties within an app or group of apps",
"appAccess": {
"BloodPressure": ["UserID","Email"],
"Mortgage": ["UserID","LastName"],
"Mystery": ["UserID","Email","WebAppsRole","WebAppsDisplayName"]
}
}
上記の userinfo.json
ファイルの場合、BloodPressure
アプリは次のようにアプリ コード内で compiler.UserInfo
関数を使用できます。
function startupFcn(app) try user = compiler.UserInfo(); catch me error(me.message); return end if ~ismissing(user.UserID) % app code % Example: % app.userIDLabel.Text = [app.userIDLabel.Text user.UserID]; end if isprop(user, 'Email') % app code % Example: % app.EmailLabel.Text = [app.EmailLabel.Text user.Email]; end ...
上記の userinfo.json
ファイルの場合、Mystery
アプリは次のようにアプリ コード内で compiler.UserInfo
関数を使用できます。
function startupFcn(app) try user = compiler.UserInfo(); catch me error(me.message); return end if isprop(user, 'WebAppsDisplayName') % app code % Example: % app.DisplayNameLabel.Text = [app.DisplayNameLabel.Text user.WebAppsDisplayName]; end if isprop(user, 'WebAppsRole') % app code % Example: % app.RoleLabel.Text = [app.RoleLabel.Text user.WebAppsRole]; end ...
参考
compiler.UserInfo
(MATLAB Compiler)