1) 安全问题
Passport站点通过url传递一个加密的字符串向Application传递认证资料,那么任何人只要获取和保存这个加密字符串,就可以获得相应用户的身份认证,这样是不是不安全?2) Email问题
象微软的Passport,一般Email都是统一管理在Passport服务器,这样当应用中需要使用某个用户的Email地址,比如一个用户向另一个用户发送消息等,Application如何获取该用户的Email地址?
因为Application显示不能保存Email,如果保存的话,当用户修改Email地址的时候,会导致所有保存Email地址的Application都得修改,显然这样做有很多不便。3) 单个Application登陆的问题
使用Passport之后,所有的登陆都需要在Passport上进行,这样Application就不能提供登陆的界面,这样可能会有很多不便,如何解决?4)用户积分
如果整个Passport的站点都使用积分或类似的功能的话,如何来完成相应的操作?共享数据库显示不是一个好办法,使用WebService吗?效率高吗?

解决方案 »

  1.   

    向Application传递认证资料的加密字符串中,要含有生命周期(时效性)的参数,
    即用登录完这次或几次后整个加密字符串就会失效。否则获得了该加密字符串,我就可以到处登录了。
    1.该具有生命周期的参数要在请求方生成(请求方每次登录都不一样),Application去向请求方验证(用webservice)。webservice复杂些。
    2.请求方生成的随机数放到加密字符串中,同时该加密随机数通过另一种渠道通知给Application如用数据库,或者XML数据来传递,只要Application知道这随机数,然后与解密后的字符串中的随机数比较就可以,如果是同一个 那就是可以了
    第二种方法比较简单,不过要求两套应用都是自己能掌控的:)
    第一种方法比较通用,任何系统都可以。
      

  2.   

    To:dragonlyf Passport生成的Token包含时间参数是个好办法,那么第一个问题应该可以解决了关于Email的问题,还是不好解决,还有后面三个问题