2017-02-10 96 views
1

我試圖配置我的Identityserver4使用ADFS 4.0作爲外部提供程序。 我已經配置如下:Identityserver4與ADFS 4.0,不能得到Userinfo或聲明

  app.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationScheme = IdentityServerConstants.ExternalCookieAuthenticationScheme 
      }); 

      app.UseOpenIdConnectAuthentication(new OpenIdConnectOptions 
      { 

       ClientId = "60b3d106-d155-4f9f-ba75-84b8078829fa", 
       AuthenticationScheme = "oidc", 
       PostLogoutRedirectUri = "http://localhost:5000", 
       DisplayName = "ADFS TEST Domain", 
       MetadataAddress = "https://srv2016dc01.test.local/adfs/.well-known/openid-configuration", 
       SaveTokens = true, 
       GetClaimsFromUserInfoEndpoint = true 
      }); 

似乎工作,因爲我可以登錄並得到一些索賠回: Claims get back from ADFS

但它看起來並不像該用戶信息端點將被調用... 否則,它應該是更多的聲明,並且我看不到在ADFS服務器的DEbug日誌中調用UserInfo端點。

我自己也嘗試在這個環節來調用用戶信息端點的代碼,如: ASP.NET Identity (with IdentityServer4) get external resource oauth access token

但在「等待_signInManager.UpdateExternalAuthenticationTokensAsync(信息);」我沒有得到一個access_token回來,只有一個id_token ...

有沒有人有ADFS 4.0或至少與任何其他外部OpenIdConnect服務器Identityserver4上的工作示例?

是否有任何其他方式從UserInfo端點獲取所有信息?

我需要從經過身份驗證的用戶角色聲明中獲取組Memeberships,以獲得WebApi資源的授予權限。

回答

2

如果我在選項中將「token id_token」設置爲ResponseType值,我會得到令牌! ResponseType =「code id_token」

如果access_token可用,則會調用UserInfo端點。

但現在我會從用戶信息端點得到一個401錯誤。 反正...這個問題是通過添加

ResponseType = "code id_token" 

到OpenIdConnectOptions解決