0

新しいプラットフォーム MFP8 に取り組んでおり、ハイブリッド アプリケーションに LTPA 認証を実装したいと考えています。Web で検索すると、LTPA ChallengeHandler の Swift 実装が見つかりました ( https://github.com/mfpdev/ldap-and-ltpa-sample/tree/master/LTPABasedSample )。しかし、JS challengeHandler で同じ動作を再現しようとすると、うまくいきません。私の challengeHandler 実装の下:

var UserLoginChallengeHandler = function() {
    var isChallenged = false;
    var securityCheckName = 'LTPA';
    var URL;
    var userLoginChallengeHandler = WL.Client.createSecurityCheckChallengeHandler(securityCheckName);

    document.getElementById("login").addEventListener("click", login);

    userLoginChallengeHandler.securityCheckName = securityCheckName;

    userLoginChallengeHandler.handleChallenge = function(challenge) {
        WL.Logger.debug("handleChallenge");
        showLoginDiv();
        isChallenged = true;
        URL = challenge.loginURL;
    };

    userLoginChallengeHandler.handleSuccess = function(data) {
        WL.Logger.debug("handleSuccess");
        isChallenged = false;
        showProtectedDiv();
    };

    userLoginChallengeHandler.handleFailure = function(error) {
        WL.Logger.debug("handleFailure: " + error.failure);
        isChallenged = false;
        if (error.failure !== null){
            alert(error.failure);
        } else {
            alert("Failed to login.");
        }
    };

    function login() {

        var basic = "Basic YWRtaW46YWRtaW4="; //base64 of admin:admin 
        $.ajax({
          type: "POST",
          url: URL,
          headers: {
            "Authorization": basic
          },
          success: function(data, status, xhr){
            console.log(data);
            userLoginChallengeHandler.submitChallengeAnswer({});
          },
          error: function(jqXhr, status, error){
            console.log(error);
          }
        });
    }

    return userLoginChallengeHandler;

};

普通戦争申請を出すと、LTPASecurityCheckのauthorizeメソッドのプリンシパルがnullになってしまいます。代わりに、iOS サンプル アプリケーションを実行すると、プリンシパルが評価され、認証が行われます。

この奇妙な動作を解決するアイデアはありますか?

どうもありがとう、ステファノ

4

1 に答える 1

1

Swift のサンプルは POST リクエストではなく GET を送信していると思います。GETとして送信しようとしましたか?

于 2017-01-17T15:17:31.257 に答える