2015-03-31 5 views
0

Я нахожусь в среде, в которой у нас есть аккаунт SharePoint, который аутентифицируется сервером ADFS. Когда я выхожу из adfs, я остаюсь включенным в sharepoint.Sharepoint 2013 FederatedAuthentication is null

Похоже, что моим решением является использование FederatedAuthentication.SessionAuthenticationModule.SignOut();

Однако, когда я пытаюсь это сделать, я получаю ссылку на объект, не установленную в экземпляр объекта.

+1

Каков ваш вопрос? – nils

ответ

0

Я надеюсь, что кто-то может указать мне в правильном направлении. Я пытаюсь получить вывеску для работы как для adfs, так и для sharepoint. Вот код, я использую

private void RemoveCookiesAndRedirect() 
    { 
     string ipUrl = GetIPUrl(); 
     //if (ipUrl != string.Empty) 
     //{ 
     string replyUrl = HttpUtility.UrlEncode(SPContext.Current.Site.RootWeb.Url); 
     string redirect = ipUrl + "?wa=wsignout1.0&wreply=" + replyUrl; 

     try 
     { 

       FederatedAuthentication.SessionAuthenticationModule.SignOut(); 

       if (Context.Session != null) Context.Session.Abandon(); 

       Context.Response.Redirect(redirect); 
      //} 
     } 
     catch (Exception ex) 
     { 
      LoggingService.LogError("LoginRedirect", ex.Message + " " + ex.InnerException + " " + ex.Data + " ipUrl:" + ipUrl + " redirect:" + redirect); 
     } 
    } 

    private string GetIPUrl() 
    { 
     IClaimsPrincipal user = Page.User as IClaimsPrincipal; 
     if (user == null) return string.Empty; 

     string ipUrl = string.Empty; 
     try 
     { 
      string providerName = (user.Identity.Name).Split('|')[1]; 
      ipUrl = SPSecurityTokenServiceManager.Local.TrustedLoginProviders[providerName].ProviderUri.AbsoluteUri; 
     } 
     catch 
     { 
      //TODO:Log it 
     } 
     return ipUrl; 
    } 

Всякий раз, когда он попадает в FederatedAuthentication.SessionAuthenticationModule.SignOut(); он ошибается.