如何和dashboardapp 如何实现单点登录录

10:41 提问
如何Android实现SSO(请耐心看完以下内容再回答)
最近在做公司项目,领导要求做一个单点登录SSO,我查遍整个百度,大概得到都是Android 连接新浪,人人,Oauth 2.0第三方接入,我想自己的项目实现单点登录,原理什么都大概看过,需要详细的解决方案,不需要讲web 应用那一套,我知道web有cook,可以保存,Android怎么实现,求做过的人分享一下,需要钞票,或者积分都可以商量,关键是做出来。
按赞数排序
我也正要搞这个,毫无头绪,兄台有结果了吗?
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
/** 使用SSO授权必须添加如下代码 */
UMSsoHandler ssoHandler = MyApplication.getInstance().umController
.getConfig().getSsoHandler(requestCode);
if (ssoHandler != null) {
ssoHandler.authorizeCallBack(requestCode, resultCode, data);
if (requestCode == LocationCityActivity.REQUEST_CODE
&& resultCode == RESULT_OK) {
String city = data.getStringExtra("city");
String cityCode = data.getStringExtra("cityCode");
refreshLocationInfo(city, cityCode);
如果你说的单点登录是,在一个应用A内,直接打开另一个应用B,并且跳过登录(相当于A已登录)。
我最近也在做。不知道你解决了没。
我的想法是用广播,发送一些数据然后接收。
具体怎么弄还没搞清楚。。
求指点。。。
其他相似问题php的sso单点登录实现方法
本文实例讲述了的sso单点登录实现方法。分享给大家供大家参考。具体分析如下:
这里详细讲到了几点:
1、点击登录跳转到SSO登录页面并带上当前应用的callback地址
2、登录成功后生成COOKIE并将COOKIE传给callback地址
3、callback地址接收SSO的COOKIE并设置在当前域下再跳回到应用1即完成登录
4、再在应用程序需要登录的地方嵌入一个iframe用来实时检测登录状态,代码如下:
index.php 应用程序页面:
代码如下:&?php&
header('Content-Type:text/ charset=utf-8');&
$sso_address = '/sso/login.php'; //你SSO所在的域名&
$callback_address = 'http://'.$_SERVER['HTTP_HOST']&
&&&&&&&&&&&&&&&&&&& .str_replace('index.php','',$_SERVER['SCRIPT_NAME'])&
&&&&&&&&&&&&&&&&&&& .'callback.php'; //callback地址用于回调设置cookie
if(isset($_COOKIE['sign'])){&
&&& exit("欢迎您{$_COOKIE['sign']} &a href="login.php?logout"&退出&/a&");&
&&& echo '您还未登录 &a href="'.$sso_address.'?callback='.$callback_address.'"&点此登录&/a&';&
&iframe src="&?php echo $sso_address ?&?callback=&?php echo $callback_address ?&" frameborder="0"& width="0" height="0"&&/iframe&
login.php SSO登录页面:
代码如下:&?php&
header('Content-Type:text/ charset=utf-8');&
if(isset($_GET['logout'])){&
&&& setcookie('sign','',-300);&
&&& unset($_GET['logout']);&
&&& header('location:index.php');&
if(isset($_POST['username']) && isset($_POST['password'])){&
&&& setcookie('sign',$_POST['username'],0,'');&
&&& header("location:".$_POST['callback']."?sign={$_POST['username']}");&
if(emptyempty($_COOKIE['sign'])){&
&form method="post"&&
&p&用户名:&input type="text" name="username" /&&/p&&
&p&密& 码:&input type="password" name="password" /&&/p&&
&input type="hidden" name="callback" value="&?php echo $_GET['callback']; ?&" /&&
&input type="submit" value="登录" /&&
&?php&
&&& $query = http_build_query($_COOKIE);&
&&& echo "系统检测到您已登录 {$_COOKIE['sign']} &a href="{$_GET['callback']}?{$query}"&授权&/a& &a href="?logout"&退出&/a&";&
callback.php 回调页面用来设置跨域COOKIE:
代码如下:&?php&
header('Content-Type:text/ charset=utf-8');&
if(emptyempty($_GET)){&
&&& exit('您还未登录');&
&&& foreach($_GET as $key=&$val){&
&&&&&&& setcookie($key,$val,0,'');&
&&& header("location:index.php");&
connect.php 用来检测登录状态的页面,内嵌在页面的iframe中:
代码如下:&?php
header('Content-Type:text/ charset=utf-8');&
if(isset($_COOKIE['sign'])){&
&&& $callback = urldecode($_GET['callback']);unset($_GET['callback']);&
&&& $query = http_build_query($_COOKIE);&
&&& $callback = $callback."?{$query}";&
&html&&script type="text/javascript"&top.location.href="&?php echo $ ?&";&/script&&/html&
希望本文所述对大家的php程序设计有所帮助。
顶一下(0) 踩一下(0)
热门标签:1753人阅读
云计算(6)
OpenStack的架构图:
http://docs.openstack.org/havana/install-guide/install/yum/content/ch_overview.html#conceptual-architecture
OpenStack服务的名词解释如下
Project name项目名
Description
Provides a web-based self-service portal to interact with underlying OpenStack services, such as launching an instance, assigning IP addresses and configuring access controls.
提供一个web界面来操作OpenStack服务,例如:创建实例,分配IP地址,配置访问权限。
Manages the lifecycle of compute instances in an OpenStack environment. Responsibilities include spawning, scheduling and decomissioning of machines on demand.
管理OpenStack环境下的计算资源和它们的生命周期,包括: 生产实例,调度,销毁实例回收资源。
Enables network connectivity as a service for other OpenStack services, such as OpenStack Compute. Provides an API for users to define networks and the attachments into them. Has a pluggable architecture that supports many popular networking vendors and
technologies.
OpenStack的网络即服务功能,提供API给用户来定义网络和附加功能。提供一个可插入式的架构,与许多流行的网络厂商和技术标准留有接口。
Stores and retrieves arbitrary unstructured data objects via a RESTful, HTTP based API. It is highly fault tolerant with its data replication and scale out architecture. Its implementation is not like a file server with mountable directories.
存储和检索非结构化的数据对象,通过REST和HTTP的API接口来调用。它有高容错性,高数据的可复制性和扩展性。它的实现不必像文件系统那样必须mount目录。
Provides persistent block storage to running instances. Its pluggable driver architecture facilitates the creation and management of block storage devices.
提供持久的块设备存储实例。它提供一些可插拔的架构来方便管理块存储设备。
Shared services
Provides an authentication and authorization service for other OpenStack services. Provides a catalog of endpoints for all OpenStack services.
提供鉴别与授权功能,可以在所有的OpenStack服务上提供一个接入点验证。
Stores and retrieves virtual machine disk images. OpenStack Compute makes use of this during instance provisioning.
存储虚拟机磁盘镜像的功能,OpenStack计算服务需要这些镜像来实例化虚拟机。
Monitors and meters the OpenStack cloud for billing, benchmarking, scalability, and statistical purposes.
监控和计量功能,提供OpenStack云计算的账单,性能指标,扩展性和满意度的调查表。
Higher-level services
混合云接入
Orchestrates multiple composite cloud applications by using either the native HOT template format or the AWS CloudFormation template format, through both an OpenStack-native REST API and a CloudFormation-compatible Query API.
混合云接入功能,提供多种云的功能调用功能,即可以通过调用OpenStack本地化的API接口实现,也可以通过AWS云接口实现??或者 云的通用格式化的API实现??神吹的功能??
Figure&1.3.&Basic architecture with legacy networking
传统的内外网隔离架构
Figure&1.4.&Basic architecture with OpenStack Networking (Neutron)
OpenStack的网络基础架构
4。OpenStack逻辑结构图
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:144711次
积分:2136
积分:2136
排名:第10676名
原创:70篇
评论:21条
(1)(2)(2)(1)(1)(2)(2)(5)(1)(2)(6)(5)(4)(2)(1)(1)(1)(1)(4)(1)(1)(1)(1)(1)(6)(2)(2)(2)(1)(2)(1)(1)(4)(3)(1)单点登录的简单实现方法
在门户项目中,经常会遇到如何实现单点登录的问题,下面就本人的经验做个总结。欢迎大家进行补充讨论。
单点登录的具体实现有很多种选择:包括:a)&采用专门的SSO商业软件:
主要有:Netgrity的Siteminder,已经被CA收购。Novell
公司的iChain。RSA公司的ClearTrust等。
b)&采用门户产品供应商自己的SSO产品,如:IBM
的Tivoli Access Manager,Sun 公司的identity Server,Oracle公司的OID等。
些商业软件一般适用于客户对SSO的需求很高,并且企业内部采用COTS软件如:Domino,SAP,Sieble的系统比较多的情况下采用。并结合身
份管理。统一认证等项目采用。采用这些软件一般都要对要集成的系统做些改造,如在要集成的系统上安装AGENT。现在一般只提供常见软件
如:Domino,SAP,Sieble,常见应用服务器:weblogic,websphere等的AGENT。要先统一这些系统的认证。一般采用
LDAP或数据库。然后才能实现SSO。比较麻烦。
d)&另外,如果不想掏银子,也有OPEN
SOURCE的SSO软件可选:主要有:&
等。具体怎么样就不清楚了。
如果项目对SSO的要求比较低,又不想对要被集成的系统做任何改动,可采用下面介绍的方式简单实现:下面我们通过一个例子来说明。假如一个门户项目要对下面的几个系统做SSO。
用户在这些系统中的用户名,密码各不相同,如:员工号为001的员工在这些系统中的用户名,密码分别如下:
Portal系统
DOMINO系统
首先,建立员工在PORTAL系统中的用户名和其他系统中的用户名之间的对应关系
要建立员工在PORTAL系统中的用户名和其他系统中的用户名之间的对应关系并保存。可保存在表中或LDAP中或文件系统中。当然要考虑这些系统之
间的数据同步问题。比较好的方式是找到用户在这些系统中的都存在的唯一信息(如员工号,MAIL地址,姓名等)。通过唯一信息实时到各个系统中去取认证所
需要的信息。就不需要考虑数据同步问题。比较实用。可以建立类似下面的表:密码可采用加密保存。
&create table
sso_info&&&&
varchar2(20),&&
&app_name varchar2(20),&
&architect varchar2(4),&
&app_company
varchar2(50),&&&&&&&&&
&app_department
varchar2(50),&&&&&
varchar2(15),&&&&&&&&&&&&&&&&
&app_passwd varchar2(15), &
&app_cookie
varchar2(30),&&&&&&&&&&&&&
&form_user
varchar2(20),&&&&&&&&&&&&&&&
&form_passwd
varchar2(20),&&&&&&&&&
&app_special&
varchar2(20)&&&&&&&&&&
通过IFRAME或超连接方式集成目标系统,并进行SSO
&通过IFRAME或超连接方式集成目标系统,并在URL中带上用户名和密码。如集成DOMINO可采用如下方式:
&iframe style="BACKGROUND-COLOR: #f7f7ff"
align="middle" marginwidth="0" marginheight="0"
src="http://host1/names.nsf?Login&Username=admin&Password=pass&RedirectTo=/names.nsf"
frameborder="0" width="100%" scrolling="yes" height="100%"
&Href src=“http://
host1/names.nsf?Login&Username=admin&Password=pass&RedirectTo=/names.nsf”
以上采用的是在HTTP中直接传递明码,为提高安全性,可采用HTTPS来传递用户名和密码。另外采用这种方式被集成的系统必须支持FORM方式认证。J2EE应用,DOMINO等都支持FORM认证。
这两种方式如果SSO成功,就自动进入目标系统的界面,如果实现会显示目标系统的登录界面。其效果图如下:
这种方式,必须维护对应关系表,如上面的sso_info。更好的方式是提供界面,让最终用户自己维护这种对应关系,可模仿Compoze
portlets for
lotus的做法,在用户第一次进入要与之做SSO的系统时,如DOMINO系统,显示一个界面,让用户自己输入他在该系统中的用户名/密码等信息。并保
存到表中或LDAP等其他数据源中。以后用户要进入这些系统时,就直接从表中或其他数据源中取用户的用户名/密码等信息,帮助用户做认证。建议采用这种方
式。如下图所示。如果用户改变了自己在DOMINO系统中的用户名,密码。从门户系统进入DOMINO系统时,认证会失败,就重新显示类似下面的界面。让
用户重新输入他在DOMINO系统中新的用户名,密码并保存。
以上这种实现方式,一般需要浏览器支持COOKIE,所以要注意浏览器的配置,在开发阶段,为方便调试,可设置IE,让它显示COOKIE的名称。如下所示:
采用这种方式,对要集成的系统不需要做任何的改
动。如果PORTAL系统中的用户在被集成的系统中的权限都一样,可采用建立一个通用用户的做法。也就是所有在PORTAL系统中的用户都采用这个通用用
户进入目标系统。这种方式等于是采用页面集成方式做集成。比较方便使用。另外,有时候需要采用调用API,或配置Adapter等应用集成方式来集成其他
系统,一般也是通过定义一个连接专用的用户。在API中或在配置Adapter的时候写死。如采用JAVA
API方式集成DOMINO:
lotus.domino.Session dominoSession =
NotesFactory.createSession(dominoServer, “admin”, “password”);
CS结构实现方式
经常有人问CS结构的应用如何实现
SSO,本人的建议是对这种系统不要自己去实现SSO。很麻烦,其实输个用户名,密码没什么大不了的。如果要实现,一是采用商业软件。另外也可以采用以下
方式:在PORTAL的PORTLET上建立超连接。并通过APPLET方式启动CS结构的应用系统的登录界面。然后通过如下的方式把用户名/密码传递过
&-不能做任何改动的客户端 -
WIN消息(给登录窗口发送用户名,密码等登录所需要的信息),模拟键盘(java有模拟键盘输入的API)
&-可以做改动的客户端 - 参数传递,并让登录的EXE文件读取参数进行认证。
因为要让APPLET执行本地的EXE文件,所以必须对IE中的JRE的安全进行设置。
在采用以上方式实现了SSO后,要注意LOGOUT,可采用与LOGIN相同的方式。也可以通过被集成系统的超时设置来实现。
http://blog.csdn.net/happyjn/archive//896671.aspx
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

我要回帖

更多关于 app 如何实现单点登录 的文章

 

随机推荐