目前我正在使用wso2 api manager 1.9商店,我们在访问商店中的任何内容之前都有一个登录页面 . 它现在工作正常 .
现在,我们要求我们在其他域上有一个Web应用程序,当我们使用admin / admin登录时,在wso2 api经理商店中使用web服务来授权用户,而不是调用它的login.jag(用于授权)在wso2商店中,它必须调用该webservice进行授权,我们可以使用与我们在该Web应用程序中使用的相同的凭据 .
所以对于这个,在login.js(在点击商店中的登录按钮后调用),我已经改变了一些代码,如: ACTUAL CODE
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>
');
}
}, "json");
CHANGED CODE
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 回答
您无法将用户名和密码传递给/ list-api . 它不处理这些参数并将它们设置为会话cookie .
我想你可以在api管理器中实现类似于SAML SSO implementation的东西 . 在SAML情况下,来自IDP的身份验证响应作为重定向发送到api manager . 该请求由/store/jagg/jaggery_acs.jag文件处理 . 会话在该位置设置 . 您可能能够实现类似的事情来处理重定向并在那里设置会话 . (我没试过这个)