Main Content

このページは機械翻訳を使用して翻訳されました。最新版の英語を参照するには、ここをクリックします。

ユーザーに基づいて Web アプリの動作をカスタマイズする

メモ

ユーザーに基づいて Web アプリの動作をカスタマイズする機能は、スタンドアロンのMATLAB® Web App Server™製品でサポートされており、 MATLABに含まれる開発バージョンではサポートされていません。 $ Compiler™。詳細については、MATLAB Web App Server の違いを参照してください。

前提条件

  • サーバー上で SSL を有効にします。詳細については、SSLを有効にするを参照してください。

  • サーバーで認証を有効にします。詳細については、認証を参照してください。

userinfo.json ファイルの作成

どのユーザーがログインしているかに基づいて Web アプリの動作をカスタマイズできます。動作をカスタマイズするには:

  1. 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

  2. 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>", ...], ... "*": "*" } }

  • &quot;バージョン&quot;:JSONスキーマのバージョンを指定します。R2023b のデフォルト値は1.0.0です。

  • userInfo.doc:userInfoブロックの目的を説明するテキスト。

  • &quot;ユーザー情報&quot;:userInfoブロックには、ユーザーの識別に役立つプロパティ名と値のリストが含まれています。プロパティ名UserIDDisplayName、およびGroups は、すべてのuserinfo.jsonファイルに必要です。必要に応じて、他のプロパティ名と値を含めることができます。プロパティ名と値は、LDAP または OIDC 属性に対応します。たとえば、電子メール アドレスをユーザー情報の一部として使用する場合は、プロパティ名としてEmailを指定し、EmailAddressの属性値をプロパティ名として指定できます。資産価値。

  • &quot;ユーザーID&quot;:ユーザーのIDに対応するLDAPまたはOIDC属性タイプをプロパティ値として指定します。 UserID は必須のプロパティ名です。以下に例を示します。

    "UserID": "uid"

    UserIDプロパティ名に対するプロパティ値として属性タイプを指定しない場合、ユーザーの詳細をクエリするcompiler.UserInfo (MATLAB Compiler)<missing>を返します。 $ をプロパティ値として指定します。

  • &quot;表示名&quot;:ユーザーの優先名に対応する LDAP または OIDC 属性タイプを指定します。以下に例を示します。

    "DisplayName": "displayName"
  • グループ:ユーザーが属するグループに対応する LDAP または OIDC 属性タイプを指定します。以下に例を示します。

    "Groups": "groups"

    メモ

    UserIDDisplayName、および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ブロックに必要なプロパティ名が含まれています: UserIDDisplayName、およびGroups。さらに、2 つのカスタム プロパティ名LastNameEmailが含まれています。すべてのプロパティ名には、プロパティ値として OIDC 属性が割り当てられます。

appAccessブロックには、 BloodPressureMortgage、およびMysteryの 3 つのアプリが含まれています。

  • BloodPressureアプリへのアクセスは、UserIDおよびuserInfoDisplayNameプロパティに基づいて制限されます。

  • Mortgageアプリへのアクセスは、UserIDおよびuserInfoLastNameプロパティに基づいて制限されます。

  • Mysteryアプリへのアクセスは、 UserIDDisplayName、および予約されたプロパティ名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
...

参考

(MATLAB Compiler)