文档中心

.Net应用接入

SSO针对Asp.Net环境,提供接入的客户端DLL包,该客户端完全实现了BingoSSO协议,并对客户端调用接口进行了封装,以便提供更简便的接入接口, 下面演示接入基本步骤。

引入DLL包

下载客户端DLL,然后添加到工程中即可(最下方有示例工程)。
Bingosoft.OAuth.ResourceServer.dll
Bingosoft.SSO.Client.Web.dll

参数配置

在Web.config中配置Handler和其他参数,为客户端应用接入提供接入服务,配置片段:

<configuration>
  <location path="ssoclient">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>
  <appSettings>
    <add key="bingosoft.sso.ssoBaseEndpoint" value="【SSO访问地址,要指定根目录,且不以“/”结尾】"/>   
    <add key="bingosoft.sso.clientId" value="clientId" />
    <add key="bingosoft.sso.clientSecret" value="clientSecret" />

    <!-- for oauth-->
    <add key="Bingosoft.OAuth.OAuth1TokenCheckEndpoint" value="【OAuth1TokenCheckEndpoint访问地址,要指定根目录,且不以“/”结尾,参考示例代码】" />
    <add key="Bingosoft.OAuth.OAuth2TokenCheckEndpoint" value="【OAuth2TokenCheckEndpoint访问地址,要指定根目录,且不以“/”结尾,参考示例代码】" />

  </appSettings>  
  <system.web>    
    <authentication mode="Forms">
      <forms loginUrl="~/ssoclient/login" timeout="2880"/>      
    </authentication>
    <authorization>
      <deny users="?"/>
    </authorization>
    <httpHandlers>
      <add path="ssoclient" type="Bingosoft.SSO.Client.Web.SingleSignOnHandler" verb="*"/> 
      <add path="ssoclient/*" type="Bingosoft.SSO.Client.Web.SingleSignOnHandler" verb="*"/>           
    </httpHandlers>  
    <httpModules>
      <add name="OAuthAuthenticationModule" type="Bingosoft.OAuth.ResourceServer.WebForm.OAuthAuthenticationModule" />      
      <!--自定义登陆逻辑-->
      <add name="SuppressFormsAuthenticationRedirectModule"
           type="Bingosoft.SSO.Demo.WebForm.Demo.SuppressFormsAuthenticationRedirectModule" />
	……
    </httpModules>  
  </system.web>
  <system.webServer>    
    <handlers>
      <add name="SingleSignOnHandler1" path="ssoclient" type="Bingosoft.SSO.Client.Web.SingleSignOnHandler" verb="*"/>
      <add name="SingleSignOnHandler2" path="ssoclient/*" type="Bingosoft.SSO.Client.Web.SingleSignOnHandler" verb="*"/>
    </handlers>
    <modules runAllManagedModulesForAllRequests="true">
      <add name="OAuthAuthenticationModule" type="Bingosoft.OAuth.ResourceServer.WebForm.OAuthAuthenticationModule" />
      <add name="SuppressFormsAuthenticationRedirectModule"
           type="Bingosoft.SSO.Demo.WebForm.Demo.SuppressFormsAuthenticationRedirectModule" />
	……
    </modules>
  </system.webServer>
</configuration>

自定义登录逻辑

Bingosoft.SSO.Client.Web.SingleSignOnHandler默认实现的OnSuccessSignIn方法,如下:

/// <summary>
/// 成功登录后的回调
/// </summary>
/// <param name="auth"></param>
protected virtual void OnSuccessSignIn(Authentication auth)
{            
    FormsAuthentication.SetAuthCookie(auth.Identity, false);
}

默认的会话机制使用的是Asp.Net WebForm机制,如果你需要实现自己的会话机制,可以继承SingleSignOnHandler,重写该方法。

注销

所有接入SSO的应用,都能完成注销,应用通过调用SSO提供的客户端注销接口,则可完成SSO及各接入应用的注销。

	<a ref="./ssoclient/logout?return_url=/index.aspx">Logout From SSO Server</a>

SSO提供的客户端组件中,提供了注销的接口地址:/ssoclient/logout,客户端应用向这个接口发起注销则可。

示例工程

.net演示工程