2013-02-28 36 views
3

我正在使用WIF登錄我的appication。一切似乎沒問題(日誌記錄,重定向到網站等),但是當我嘗試在我的鱈魚異常使用User.Identity.Name正在拋出 - User爲空。任何想法我做錯了什麼?我在VS工作在web.config中產生的2012年部分看起來象下面這樣:通過WIF進行身份驗證後,User.Identity.Name爲null

<system.identityModel> 
    <identityConfiguration> 
     <audienceUris> 
     <add value="http://xxx/" /> 
     </audienceUris>  
     <issuerNameRegistry type="System.IdentityModel.Tokens.ConfigurationBasedIssuerNameRegistry, System.IdentityModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"> 
     <trustedIssuers> 
      <add thumbprint="yyyy" name="https://zzz" /> 
     </trustedIssuers> 
     </issuerNameRegistry> 
    </identityConfiguration> 
    </system.identityModel> 

和:

<system.identityModel.services> 
    <federationConfiguration> 
     <cookieHandler requireSsl="false" /> 
     <wsFederation passiveRedirectEnabled="true" issuer="https://zzz/Secure/FederatedLogin.ashx" realm="http://xxx" requireHttps="false" />   
    </federationConfiguration>   
    </system.identityModel.services> 

回答

1

檢查STS包括名稱要求的用戶,否則User.Identity.Name將是無效的。

0

相反,我用:

namespace System.Security.Claims 
{ 
    public static class System_Security_Claims_Extensions 
    { 
     public static string getName(this ClaimsIdentity ci) 
     { 
      foreach (Claim c in ci.Claims) 
      { 
       if (c.Type == ClaimTypes.Name) 
       { 
        return c.Value; 
       } 
      } 
      return string.Empty; 
     } 
    } 
} 

而且在這種情況下使用
((ClaimsIdentity)Thread.CurrentPrincipal.Identity).getName()

相關問題