是否可以在Angular4 SPA中使用Shibboleth? 如果是,怎么样?
我的方案如下:我有一个SPA,无需登录即可全局访问。只有在使用Shibboleth登录后才能访问某些页面。因此,我想通过Shibboleth对用户进行身份验证,并为用户生成JWT,用于对提供受保护页面内容的API进行身份验证。
我面临的问题是,用户必须导航到服务提供商的shibboleth-login-page,因此请离开SPA进行登录。所以我可以在像/shibprotected/getJWT
这样受shibboleth保护的网站上创建一个JWT,并将用户重定向到那里。但是如何在我的Angular应用程序中获取令牌?那么我该如何将用户重定向回应用程序呢?
我可以使用cookies来完成这项任务吗?
答案 0 :(得分:1)
finnaly我通过以下设置管理任务:
我生成了login-URL,可以通过<a href="authService.getLoginUrl('/currentpage')">Login</a>
引用:
getLoginUrl(returnUrl = '') {
if (returnUrl === '' || returnUrl.startsWith('/')) {
returnUrl = window.location.origin + returnUrl;
}
return environment.backend_server_url + '/shibprotected/getJWT?return_url=' + encodeURIComponent(returnUrl);
}
在/shibprotected/getJWT
(在同一服务器上通过shibboleth保护的页面)中,我生成JWT并将其设置为cookie。然后我重定向到return_url:
setcookie("token", $token);
header("Location: " . $return_url);
回到angular-app我正在document.cookie
这种方法有两个缺点,当使用带有SPA的shibboleth时可能是不可避免的: