统一身份认证-ASP.NET接入手册
2023年1月14日大约 3 分钟
统一身份认证-ASP.NET接入手册
统一身份认证服务核心是CAS(Central Authentication Service)认证,当前CAS Server是基于开源框架CAS 6.3.1开发集成。
支持CAS、SAML、OPENID、OAuth2.0等协议,支持JAVA、.NET、PHP等多个平台产品的CAS客户端对接,支持服务属性控制等。
本文提供的是ASP.NET客户端的对接说明,如需(JAVA,ASP.NET,PHP)以外的语言支持,请参考:https://apereo.github.io/cas/6.3.x/planning/Architecture.html。
前置条件
- 获取到CAS SERVER端的认证地址
- 授权当前CAS CLIENT登录地址以及登出回调地址
ASP.NET客户端对接说明
步骤一:拷贝dll文件
根据net版本添加dll,添加到工程bin目录中。
DotNetCasClient.dll
DotNetCasClient.pdb
DotNetCasClient.xml
步骤二:修改Web.config文件
1、注册casClientConfig部分
<configSections>
<section name="casClientConfig" type="DotNetCasClient.Configuration.CasClientConfiguration, DotNetCasClient"/>
</configSections>2、<casClientConfig>配置元素直接放在根<configuration>元素下。<casClientConfig>元素在 web.config 文件中的位置并不重要。
参数说明
casServerLoginUrl- 必填,cas server 登录地址。casServerUrlPrefix- 必填,cas server 登录前缀。serverName- 必填,当前客户端地址。notAuthorizedUrl- 可选参数,当请求具有有效的 CAS 票证但用户无权访问 URL 或资源时重定向到的 URL。如果设置了此选项,用户将被重定向到此 URL。
如果未设置,用户将被重定向到 CAS 登录屏幕,URL 中包含一个更新选项(强制收集备用凭据)cookiesRequiredUrl- 可选,当客户端不接受会话 cookie 时重定向到的 URL。仅当启用网关时才会检测到这种情况。这会将用户锁定在特定页面上。
否则,每个请求都会导致到 CAS 服务器的静默往返,向 URL 添加一个参数。renew- 可选,启用 CAS 网关功能。singleSignOut- 可选,使该应用程序能够在用户的 SSO 会话结束时接收发送的 CAS 单点注销消息。这将导致此应用程序中的用户会话被破坏。
默认为true。ticketValidatorName- 必填,票据验证器名称,有效值为Cas10、Cas20和Saml11。serviceTicketManager- 必填。用于存储 CAS 服务器返回的票证的服务票证管理器,以进行验证、撤销和单点注销支持。如果没有配置工单管理器,这些功能将被禁用。
有效值为CacheTicketManager、CacheServiceTicketManager。
<casClientConfig
casServerLoginUrl=http://10.10.10.103:8014/cas/login
casServerUrlPrefix=http://10.10.10.103:8014/cas/
serverName=http://10.10.10.29:63937
notAuthorizedUrl="~/NotAuthorized.aspx"
cookiesRequiredUrl="~/CookiesRequired.aspx"
redirectAfterValidation="true"
renew="false"
singleSignOut="true"
ticketValidatorName="Cas20"
serviceTicketManager="CacheServiceTicketManager"/>3、通过将CasAuthenticationModule添加到 <system.web><httpModules> 和 <system.webServer><modules> 部分,向 ASP.NET 管道注册 CasAuthenticationModule 3.1. 注册 httpModules 部分:
<system.web>
<!--其他部分 -->
<httpModules>
<add name="DotNetCasClient"
type="DotNetCasClient.CasAuthenticationModule,DotNetCasClient"/>
<!--其他部分 -->
</httpModules>
</system.web>4、注册模块部分:
<system.webServer>
<!--已禁用集成模式配置验证。这将允许在IIS 5/6和7上运行单个部署没有错误-->
<validation validateIntegratedModeConfiguration="false"/>
<modules>
<!-- IIS7+ 先移除后添加,IIS5/6没有影响-->
<remove name="DotNetCasClient"/>
<add name="DotNetCasClient"
type="DotNetCasClient.CasAuthenticationModule,DotNetCasClient"/>
</modules>
</system.webServer>5、配置ASP.NET表单身份验证,配置ASP.NET窗体身份验证部分<forms>,使其指向在 casClientConfig 部分的casServerLoginUrl属性中定义的 CAS 服务器的登录 URL 。CAS 登录 URL 在两个位置相同是非常重要的。
参数说明
loginUrl- 必填,cas server登录地址。timeout- 必填,cas server登录失效时间,分钟。defaultUrl- 必填,—当前系统登录地址。path- 如果存在重定向次数过多,去掉path。
<system.web>
<authentication mode="Forms">
<forms
loginUrl="https://server.example.com/cas/login"
timeout="30"
defaultUrl="~/Default.aspx"
cookieless="UseCookies"
slidingExpiration="true"
path="/ApplicationName/" />
</authentication>
<!--如果存在配置不生效,禁止匿名登录-->
<authorization>
<deny users="?" />
</authorization>
<!--解决重定向次数过多-->
<sessionState mode="StateServer" cookieless="UseCookies" timeout="3600"></sessionState>
</system.web>ASP.NET客户端配置证书说明
- 需要cas服务端提供证书。
- 在Web托管程序上配置相应证书。
