zoukankan      html  css  js  c++  java
  • WIF(Windows Identity Foundation) 被动联合身份验证过程详解

    前面几篇文章介绍了下微软标识库WIF的基本概念,WIF目前支持两种验证方案,一个是 asp.net的被动联合身份验证,二是WCF的身份验证,因为前者需要用到浏览器,所以采用了一些技巧去实现,根据这些技巧的行为微软定义为"被动的".

    下面我用一个示例项目来讲解:

    首先我作为客户访问 下面项目中的 Default页面,这个应用程序叫做 "信赖方应用程序(RP)",是声明感知的,这些概念可以去MSDN里面详细了解.

    我用Opera浏览器来拦截请求,图中的工具可以按(shift+ctrl+i),首先需要在页面右击"编辑站点首选项",

    1."脚本"选项卡里面去掉"允许使用javascript",

    2.然后去掉在"网络"选项卡里面的"允许自动重定向",这是为了捕获http请求头必须的.

    我们请求RP的defalut页面时,由于未经验证,RP在响应头里面设置了重定向,重定向到STS的default页面(这个页面是专门用来给RP传递令牌的),你可能会疑问,这个重定向的url里面的参数好奇怪,什么wa,wtrealm..  其实这些是由Rp方的 Microsoft.IdentityModel.Web.WSFederationAuthenticationModule拦截未验证的请求后生成的,

    这些参数在 WSFederationConstants 类里面.

    当转到STS的Default页面时,STS说:咦?你还没有通过我的验证哦,我不能给你令牌的,你得先让我验证下你的身份.这样STS又转向到他的表单验证登录页面... 折腾啊!!

    Login.aspx页面已经返回了上面的HTML ,为了演示,没有任何漂亮的样式 ,也没做任何密码决断,只要用户名不为空就算通过了.我来提交下.

    提交的时候顺便把这个cookie提交过去了,这是刚刚请求那个登录页面时设置了,表单验证必备的,你懂的.

    提交后,我们就算通过表单验证了,通过后干了什么呢?这个页面有点不好捕获,这也是之前为什么我要禁用脚本的原因,否则一闪就过了.这个页面是刚刚STS default.aspx页面返回的,

    因为他已经被表单验证通过了,这个页面其实就是返回一个自提交JS和一个XML

    以下是上面页面的HTML ,技术很简单 ,很多人用过了

    以下是这次POST的拦截信息

    好吧我把上面的提交下吧,这是提交是 STS default.aspx 页面 向 RP的 default.aspx 页面提交

    哈哈,当这个令牌传递给RP时,RP端的 Default.aspx页面终于出现了

    顺便把那个令牌XML格式化出来贴上

    好了 时间不早了 读者消化下,多谢支持 ,点击此处下载

    MSDN对此过程的图示:

    http://msdn.microsoft.com/zh-cn/library/ee517293.aspx 

    令牌采用的ws-trust行业标准协议,可支持java客户端

    Project Tango ,Metro 的介绍

    http://dev.21tx.com/2008/12/20/11343.html

    欢迎进入【系统架构师】群

    点击这里加入此群

  • 相关阅读:
    inotify事件监控
    NFS网络文件共享服务
    Rsync数据同步服务
    SSH连接原理及ssh-key讲解
    C语言I博客作业04
    C语言l博客作业03
    C语言I博客作业02
    定义一个计算字符串高度的方法
    字典转模型
    UIScrollView和UIPageControl
  • 原文地址:https://www.cnblogs.com/cabbage/p/2272775.html
Copyright © 2011-2022 走看看