在wso2 api manager中授权用户

时间:2016-03-14 05:32:17

标签: wso2 wso2-am

目前我正在使用wso2 api manager 1.9商店,我们在访问商店中的任何内容之前都有一个登录页面。它现在工作正常。

现在,要求我们在其他域上有一个Web应用程序,当我们使用admin / admin登录而不是调用login.jag时,在wso2 api经理商店中也有web服务来授权用户。对于wso2商店中的授权,它必须调用该Web服务进行授权,我们可以使用与该Web应用程序中已使用的相同的凭据。

所以为此,在login.js(在点击商店中的登录按钮后调用)中,我更改了一些代码,如:  实际代码

 loginbox.login = function (username, password, url,tenant) {

    jagg.post("/site/blocks/user/login/ajax/login.jag", { action:"login", username:username, password:password,tenant:tenant },
                     function (result) {
                         if (result.error == false) {
                             if (redirectToHTTPS && redirectToHTTPS != "" && redirectToHTTPS != "{}" &&redirectToHTTPS != "null") {
                                 window.location.href = redirectToHTTPS;
                             } else if(url){
                                 window.location.href = url;
                             }else{
                                 window.location.href='site/pages/list-apis.jag';
                             }
                         } else {
                             $('#loginErrorMsg').show();
                             $('#password').val('');
                             $('#loginErrorMsg div.theMsg').text(result.message).prepend('<strong>'+i18n.t("errorMsgs.login")+'</strong><br />');
                         }
                     }, "json");

更改代码

    loginbox.login = function (username, password, url,tenant) {
                $.post(authentication_url,function(result){
                if(result.statusCode==200){
                      //will forward it to list-apis to display the apis
    window.location.href='site/pages/list-apis?username=test&password=test&tenant=tenant'
                }

});

使用这个更改的代码,我从我正在调用的webservice获得预期的响应,但是无法将它们保存在会话cookie中,因为在它调用site / blocks / user / login / ajax / login之前.jag将授权用户,然后检查csrf令牌和许多其他东西。

任何人都可以告诉我我失踪的地方或我需要更改的地方,以便可以授权来自webservice的用户。??

由于

1 个答案:

答案 0 :(得分:0)

您无法将用户名和密码传递给/ list-api。它不处理这些参数并将它们设置为会话cookie。

window.location.href='site/pages/list-apis?username=test&password=test&tenant=tenant'

我认为您可以在api管理器中实现与SAML SSO implementation类似的功能。在SAML情况下,来自IDP的身份验证响应作为重定向发送到api manager。该请求由/store/jagg/jaggery_acs.jag文件处理。会话在该位置设置。您可能能够实现类似的事情来处理重定向并在那里设置会话。 (我没试过这个)