すべてのプロダクト
Search
ドキュメントセンター

Mobile Platform as a Service:JSAPI 認証の設定

最終更新日:Jan 17, 2025

mPaaS では、すべての JavaScript API(JSAPI)に対してアクセス制御を追加することをお勧めします。アクセス制御を追加するためのプラグインを設定できます。

  1. プラグインを制御するための権限をカスタマイズします。

    1. JSAPI 呼び出しイベントをリッスンしてインターセプトするプラグインをカスタマイズします。

    2. プラグインがイベントをインターセプトした後、プラグインは現在のページの URL を取得します。プラグインは、文字列がホストとスキーム情報に一致するかどうかを確認することをお勧めします。

    @interface MPPlugin4WebView : NBPluginBase
    
    @end
    
    @implementation MPPlugin4WebView
    
    - (void)pluginDidLoad
    {
        self.scope = kPSDScope_Scene;
        
        // -- 呼び出されている JSAPI に関する情報をインターセプトします。
        [self.target addEventListener:kEvent_Invocation_Event_Start withListener:self useCapture:NO];
        [self.target addEventListener:kEvent_Invocation_Invoke withListener:self useCapture:NO];
            
        [super pluginDidLoad];
    }
    
    - (void)handleEvent:(PSDEvent *)event
    {
        [super handleEvent:event];
        
        if([kEvent_Invocation_Event_Start isEqualToString:event.eventType] ||
                 [kEvent_Invocation_Invoke isEqualToString:event.eventType]){
            PSDInvocationEvent *invocationEvent = (PSDInvocationEvent *)event;
            NSString *apiName = invocationEvent.invocationName;
            NSDictionary *data = invocationEvent.invocationData;
    
            // 現在のページの URL を取得し、文字列がスキームとホスト情報に一致するかどうかを確認します。
            NSURL *url = event.context.currentViewController.url;
            if (![url.host isEqualToString:@"xxx"] || ![url.scheme isEqualToString:@"xxx"]) {
                [event preventDefault];
                [event stopPropagation];
                return;
            }
            
        }
    }
    
    - (int)priority
    {
        return PSDPluginPriority_High+1;
    }
    重要

    URL は完全一致が必要です。少なくとも URI クラスのスキームとホスト情報は一致する必要があります。正規表現によるマッチングは使用しないか、注意して使用してください。 contains、startsWith、endsWith、indexOf などの不正確な関数の使用は避けてください。

  2. プラグインを登録します。

    1. mPaaS の HTML5 コンテナが初期化されるときに、カスタムプラグインへのパスを指定します。

    2. カスタムプラグインのバンドル内の plist ファイルを開き、前の手順でカスタマイズしたプラグインを登録します。詳細については、「プラグインを登録する」をご参照ください。

      image