このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
ユーザーに基づいてWebアプリの動作をカスタマイズする
メモ
ユーザーに基づいて Web アプリの動作をカスタマイズする機能は、スタンドアロンの MATLAB® Web App Server™ 製品ではサポートされており、MATLAB Compiler™ に含まれる開発バージョンではサポートされていません。詳細については、MATLAB Web App Server の違い を参照してください。
前提条件
サーバーで SSL を有効にします。詳細については、MATLAB Web App Server で SSL を有効にするを参照してください。
サーバー上で認証を有効にします。詳細については、認証を参照してください。
userinfo.json ファイルの作成
ログインしているユーザーに基づいて Web アプリの動作をカスタマイズできます。動作をカスタマイズするには:
userinfo.jsonという名前のファイルを作成し、サーバーのwebapps_privateフォルダーに配置します。webapps_privateフォルダは次の場所にあります:オペレーティング システム フォルダーの場所 Windows®
%ProgramData%\MathWorks\webapps\R2025a\config\webapps_privateLinux®
/local/MathWorks/webapps/R2025a/config/webapps_privatemacOS
/Library/Application Support/MathWorks/webapps/R2025a/config/webapps_privateMATLAB の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 スキーマのバージョンを指定します。R2025a のデフォルト値は
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>を返します。DisplayName:ユーザーの優先名に対応する LDAP または OIDC 属性タイプを指定します。以下に例を示します。
"DisplayName": "displayName"Groups:ユーザーが属するグループに対応する LDAP または OIDC 属性タイプを指定します。以下に例を示します。
"Groups": "groups"メモ
UserID、DisplayName、およびGroupsプロパティ名は、すべてのuserinfo.jsonファイルに必要です。userInfoブロックにカスタム プロパティ名を追加し、LDAP または OIDC 属性タイプに基づいてプロパティ値を割り当てることができます。たとえば、ユーザー情報の一部として電子メール アドレスを使用する場合は、プロパティ名としてEmailを指定し、プロパティ値として LDAP 属性タイプEmailAddress(または OIDC を使用している場合はmail) を指定できます。appAccess.doc:
appAccessブロックの目的を説明するテキスト。appAccess:
appAccessブロックには、サーバー上でホストされているアプリ名に対応するプロパティ名と、userInfoブロックのプロパティ名に対応するプロパティ値のリストが含まれています。appAccessブロック内でアプリを指定すると、その特定のアプリがアクセスできるユーザー プロパティを決定できます。<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プロパティ、およびuserInfoブロックの予約済みプロパティ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)