ChallengeHandler.submitChallengeAnswer(凭据)和WLAuthorizationManager.login(SECURITY_CHECK_NAME,凭据)之间的差异

时间:2017-08-08 12:47:42

标签: oauth-2.0 ibm-mobilefirst

使用ChallengeHandler.submitChallengeAnswer(credentials)WLAuthorizationManager.login(SECURITY_CHECK_NAME, credentials)之间有什么区别?

2 个答案:

答案 0 :(得分:1)

您可能还希望在没有收到任何质询的情况下登录用户。例如,将登录屏幕显示为应用程序的第一个屏幕,或在注销或登录失败后显示登录屏幕。我们将这些场景称为抢先登录。

如果没有质询要求,您无法调用submitChallengeAnswer API。对于这些方案,Mobile Foundation SDK包含登录API:

WLAuthorizationManager.login(securityCheckName,credentials).then(
    function () {
        WL.Logger.debug("login onSuccess");
    },
    function (response) {
        WL.Logger.debug("login onFailure: " + JSON.stringify(response));
});

如果凭据错误,安全检查会发回挑战。

根据应用程序的需要,开发人员有责任知道何时使用login而不是submitChallengeAnswer。实现此目的的一种方法是定义布尔标志,例如isChallenged,并在达到true时将其设置为handleChallenge,或者在任何其他设置中将其设置为false案例(失败,成功,初始化等)。

当用户单击“登录”按钮时,您可以动态选择要使用的API:

if (isChallenged){
    userLoginChallengeHandler.submitChallengeAnswer(credentials);
} else {
    WLAuthorizationManager.login(securityCheckName,credentials).then(
//...
    );
}

答案 1 :(得分:0)

MobileFirst实施OAuth 2授权框架https://www.ibm.com/support/knowledgecenter/en/SSHS8R_8.0.0/com.ibm.worklight.dev.doc/dev/c_oauth_security_model.html。实施过程分为两个阶段:获取访问令牌,以及
使用访问令牌访问受保护资源 ChallengeHandler API用于实现第一阶段,即获取 访问令牌。 WLAuthorizationManager API用于实现
第二阶段,访问受保护的资源。可以找到更多细节 在https://www.ibm.com/support/knowledgecenter/SSHS8R_8.0.0/com.ibm.worklight.dev.doc/dev/c_oauth_client_apis.html?view=embed#c_oauth_client_apis