Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在wso2 api管理器中授权用户_Wso2_Wso2 Am - Fatal编程技术网

在wso2 api管理器中授权用户

在wso2 api管理器中授权用户,wso2,wso2-am,Wso2,Wso2 Am,目前我正在使用wso2 api manager 1.9商店,在访问商店中的任何内容之前,我们都有一个登录页面。它目前运行良好 现在,有一个要求,当我们使用admin/admin登录时,在wso2 api管理器存储中,我们在其他一些域上有一个web应用程序,该应用程序也有web服务,以授权用户,而不是调用其login.jag(用于wso2存储中的授权),它必须调用该web服务进行授权,并且我们可以使用与该web应用程序中已经使用的相同的凭据 因此,在login.js中(单击商店中的登录按钮后调用)

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

现在,有一个要求,当我们使用admin/admin登录时,在wso2 api管理器存储中,我们在其他一些域上有一个web应用程序,该应用程序也有web服务,以授权用户,而不是调用其login.jag(用于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'
                }
}))

通过这段更改后的代码,我从正在调用的Web服务获得了预期的响应,但无法将它们保存在会话cookie中,因为在调用site/blocks/user/login/ajax/login.jag之前,它将对用户进行授权,然后检查csrf令牌和许多其他内容

任何人都可以告诉我我在哪里丢失了,或者我需要在哪里更改,以便webservice的用户可以获得授权


谢谢

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

window.location.href='site/pages/list-apis?username=test&password=test&tenant=tenant'
我认为您可能能够在api管理器中实现类似的功能。在SAML情况下,来自IDP的身份验证响应作为重定向发送到api管理器。该请求由/store/jagg/jaggery_acs.jag文件处理。会话设置在该位置。您可能能够实现类似的事情来处理重定向并在那里设置会话。(我没有试过这个)