このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。
ユーザーに基づいて 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\R2023b\config\webapps_private
Linux®
/local/MathWorks/webapps/R2023b/config/webapps_private
macOS
/Library/Application Support/MathWorks/webapps/R2023b/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スキーマのバージョンを指定します。R2023b のデフォルト値は
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
(またはmail
(OIDC を使用する場合)) をプロパティ値として使用します。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
。さらに、2 つのカスタム プロパティ名LastName
とEmail
が含まれています。すべてのプロパティ名には、プロパティ値として OIDC 属性が割り当てられます。
appAccess
ブロックには、 BloodPressure
、 Mortgage
、およびMystery
の 3 つのアプリが含まれています。
BloodPressure
アプリへのアクセスは、UserID
およびuserInfo
DisplayName
プロパティに基づいて制限されます。Mortgage
アプリへのアクセスは、UserID
およびuserInfo
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)