1
revlis7 OP Any Ideas?
|
2
wingoo 2013-08-07 12:06:59 +08:00 1
可以看下oauth 的实现, 如果自己跳转搞的话, 建议不要带用户信息, 可以一个guid过去,一次失效, 判断是否登录
|
3
atan 2013-08-07 12:26:38 +08:00 1
如果是apache的话可以试试mod_auth_tkt
|
4
revlis7 OP |
5
revlis7 OP 这些都是我自己的理解,如果有错误的地方,可以纠正我。
|
6
wingoo 2013-08-07 13:06:05 +08:00
@revlis7 oauth只能说是曲线实现统一登录, 但公开的方案好处是安全之类的都考虑到了, 自己做套方案的话, 不能保证想全了
|
7
denger 2013-08-07 13:11:42 +08:00 1
可以看看我之前写的这方面的文章:
http://denger.iteye.com/category/161641 个人对 cas 比较熟悉。同样是基于统一认证中心来规避 session/cookie 存储跨应或域的问题。使用也较为简单,虽然它的 认证中心是基于 Java 实现,但是对于客户端(应用程序) 来说,提供有各种语言实现。python /php 等~ oauth 之类的个人感觉它更适用于第三方网站的登录授权。 |
8
ksc010 2013-08-07 13:22:31 +08:00
我现在用的是第二种
|
9
atan 2013-08-07 13:46:29 +08:00
@revlis7 CAS相对太庞大了些, 感觉有些时候小项目背后拉了个大家伙, mod_auth_tkt相比轻巧很多, 而且部署和迁移都挺方便的
|
10
ivydom 2019-10-10 16:39:26 +08:00
最简洁的就是用 Authing,超简单就可以实现:
``` javascript <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width=device-width, initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>Authing 单点登录实现示例</title> <style> body { font-family: Avenir,Helvetica,Arial,sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-align: center; color: #2c3e50; margin-top: 60px; } a { color: #42b983; cursor: pointer; text-decoration: underline; } </style> </head> <body> <div style="margin-bottom:22px"> <img data-v-1129b33e="" alt="Vue logo" height="200" src="https://cdn.authing.cn/[email protected]"> <h1>使用 Authing 五分钟实现单点登录</h1> <h2>当前状态:<span id="status">检测中</span></h2> <h3 id="track-session-tip" style="display:none">以下是你的 session 信息:</h3> <pre style="text-align: left;" id="session"></pre> </div> <a id="btn-login">登录</a> <a id="btn-logout">退出</a> <p> <a href="https://authing.cn/login" target="_blank">使用 Authing</a> <a href="https://github.com/Authing/web-sso-sample" target="_blank" style="margin-left:11px">本示例代码</a> <a href="https://docs.authing.cn/authing/quickstart/implement-sso-with-authing" target="_blank" style="margin-left:11px">开发文档</a> </p> <p> <a href="https://github.com/Authing/oidc-window">在单窗口中打开登录页面的代码示例</a> </p> <script src="https://cdn.jsdelivr.net/npm/@authing/sso/dist/AuthingSSO.umd.min.js"></script> <script src="https://cdn.authing.cn/js-beautify/1.7.5/beautify.min.js"></script> <script> const authing = new AuthingSSO({ appId: "5d70d0e991fdd597019df70d", // OIDC 应用的 ID appType: "oidc", // SSO 类型为 OIDC 类型 appDomain: "sample-sso.authing.cn" }); const callTrackSession = async function() { const res = await authing.trackSession(); if (!res.session) { status.innerHTML = '未登录'; logout.setAttribute('style', 'display:none'); }else { status.innerHTML = `${res.userInfo.username || res.userInfo.email || res.userInfo.nickname} 你好,你已处于登录状态`; login.setAttribute('style', 'display:none'); sessionTip.setAttribute('style', 'display: block'); sessionPre.innerHTML = js_beautify(JSON.stringify(res)); } }; // 检查登录状态 callTrackSession() const login = document.getElementById('btn-login'); const logout = document.getElementById('btn-logout'); const status = document.getElementById('status'); const sessionPre = document.getElementById('session'); const sessionTip = document.getElementById('track-session-tip'); login.onclick = function() { authing.login(); }; logout.onclick = async function() { let res = await authing.logout(); alert(JSON.stringify(res)); location.reload(); }; </script> </body> </html> ``` 线上体验:sample.authing.cn https://github.com/Authing/web-sso-sample/blob/master/index.html |