2017-01-19 17 views
2

私はIdentityServer3.Adminベータ版(https://github.com/IdentityServer/IdentityServer3.Admin)を試していますが、設定に問題があり、何かガイダンスが見つからないようです。起動時のIdentityServer3.Adminの設定

アイデンティティマネージャプロジェクトをセットアップしていますので、これまでガイドとして使っていますが、IdentityAdSerServiceFactoryには、IdentityManagerServiceFactoryのようなconfigureメソッドがありません。

これは私がこれまで持っていたStartup.csファイルのコードです。どんな援助も感謝して受け取りました!

ありがとうございました。

 app.Map("/admin", adminApp => 
     { 
      var factory = new IdentityAdminServiceFactory(); 
      //factory.Configure() or something would go here??? 

      adminApp.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = "Cookies" 
      }); 

      adminApp.UseWsFederationAuthentication(new WsFederationAuthenticationOptions 
      { 
       MetadataAddress = ConfigurationManager.AppSettings["AzureADMetadataEndpoint"], 
       Wtrealm = ConfigurationManager.AppSettings["AzureADApplicationId"], 
       SignInAsAuthenticationType = "Cookies", 
       Notifications = new WsFederationAuthenticationNotifications 
       { 
        SecurityTokenValidated = ctx => 
        { 
         var roleClaim = new Claim("role", "IdentityManagerAdministrator"); 
         ctx.AuthenticationTicket.Identity.AddClaim(roleClaim); 
         return Task.FromResult(0); 
        } 
       } 
      }); 

      adminApp.UseIdentityAdmin(new IdentityAdminOptions 
      { 
       Factory = factory, 
       AdminSecurityConfiguration = new AdminHostSecurityConfiguration 
       { 
        HostAuthenticationType = "Cookies", 
        NameClaimType = ClaimTypes.Name, 
        RoleClaimType = "role", 
        AdminRoleName = "IdentityManagerAdministrator" 
       } 
      }); 
     }); 

答えて

6

[OK]ので、Twitterの投稿者の助けを借りて、私はこれをソートしました。だから、同じ問題を抱えている誰かのために、これは私が働いている方法です。

インストールしなければならなかった2番目のパッケージ、IdentityServer3.Admin.EntityFrameworkがあります。 githubの上のレポでは、また、私は実装の指針として、そのコードを使用するサンプルプロジェクト(https://github.com/IdentityServer/IdentityServer3.Admin.EntityFramework/tree/master/source/Host

あり、私自身IdentityManagerAdminServiceプラス"IdServer3"は私の接続文字列が中に私のIDサーバのDBにある工場のための拡張メソッド私のWeb.config

public class IdentityAdminManagerService : IdentityAdminCoreManager<IdentityClient, int, IdentityScope, int> 
{ 
    public IdentityAdminManagerService() 
     : base("IdServer3") 
    { 
    } 
} 

public static class IdentityAdminManagerServiceExtensions 
{ 
    public static void Configure(this IdentityAdminServiceFactory factory) 
    { 
     factory.IdentityAdminService = new Registration<IIdentityAdminService, IdentityAdminManagerService>(); 
    } 
} 

は今私のStartup.csファイルで私は、次のと、私が私のIDサーバに/adminパスを打ったときに期待通りに働いています。 WsFederationAuthenticationセクションは必須ではありません。私はAzure Active Directoryを使用して管理セクションを保護しています。なぜなら、私はそれを持っているからです。

 app.Map("/admin", adminApp => 
     { 
      var factory = new IdentityAdminServiceFactory(); 
      factory.Configure(); 

      adminApp.UseCookieAuthentication(new CookieAuthenticationOptions 
      { 
       AuthenticationType = "Cookies" 
      }); 

      adminApp.UseWsFederationAuthentication(new WsFederationAuthenticationOptions 
      { 
       MetadataAddress = ConfigurationManager.AppSettings["AzureADMetadataEndpoint"], 
       Wtrealm = ConfigurationManager.AppSettings["AzureADApplicationId"], 
       SignInAsAuthenticationType = "Cookies", 
       Notifications = new WsFederationAuthenticationNotifications 
       { 
        SecurityTokenValidated = ctx => 
        { 
         var roleClaim = new Claim("role", "IdentityManagerAdministrator"); 
         ctx.AuthenticationTicket.Identity.AddClaim(roleClaim); 
         return Task.FromResult(0); 
        } 
       } 
      }); 

      adminApp.UseIdentityAdmin(new IdentityAdminOptions 
      { 
       Factory = factory, 
       AdminSecurityConfiguration = new AdminHostSecurityConfiguration 
       { 
        HostAuthenticationType = "Cookies", 
        NameClaimType = ClaimTypes.Name, 
        RoleClaimType = "role", 
        AdminRoleName = "IdentityManagerAdministrator" 
       } 
      }); 
     }); 
関連する問題