使用IdentityServer4

时间:2017-05-19 06:40:44

标签: asp.net angular asp.net-core asp.net-identity identityserver4

我使用yeoman上的最新模板创建了一个ASP.NET Core Angular应用程序。我正在运行IdentityServer4。在IdentityServer4中,我为MVC应用程序创建了一个客户端。

        // OpenID Connect implicit flow client (MVC)
        new Client
        {
            ClientId = "mvc",
            ClientName = "MVC Client",
            AllowedGrantTypes = GrantTypes.Implicit,

            RedirectUris = { "http://localhost:5002/signin-oidc" },
            PostLogoutRedirectUris = { "http://localhost:5002/signout-callback-oidc" },

            AllowedScopes =
            {
                IdentityServerConstants.StandardScopes.OpenId,
                IdentityServerConstants.StandardScopes.Profile
            }
        }

我使用以下文档来帮助解决此问题:http://docs.identityserver.io/en/release/quickstarts/3_interactive_login.html
我在Home控制器中添加了[Authorize]属性,一切似乎都正常。用户无法访问Angular代码,因为Home Controller会立即重定向到IdentityServer4进行登录。

我对混合流程与上面设置的内容有点混淆。 http://docs.identityserver.io/en/release/quickstarts/5_hybrid_and_api_access.html

因为我将使用ASP.NET Core Angular模板,它真的那么简单吗?只需将MVC应用程序添加为客户端,并将Authorize属性添加到HomeController的顶部?我想如果我可以利用ASP.NET Core,为什么要经历使用oidc-client在Angular中设置所有内容的所有麻烦。

我相信一旦用户角色参与(用户可以访问的内容),我的设置就会失败。我会依靠IdentityServer4告诉我这些角色,但我需要在Angular中访问它们。也许这就是我的问题的答案......这是混合工作流程的用途吗?

以下是我的应用的结构:
MyApp.Web
MyApp.Api(Angular将调用的Api,另外还有IdentityServer的IdentityController)
MyApp.Auth(身份服务器)

如果有人对我的问题完全感到困惑,那么如果我能够通过使用IdentityServer4和ASP.NET Core Angular应用程序设置身份验证/授权的好方法获得建议,将会非常有益。利用.NET Core方面的优势,我不必完全在客户端上完成所有的auth。

1 个答案:

答案 0 :(得分:0)

利用.NET Core方面的优势,所以我不必完全在客户端上进行所有的验证 - 我认为你已经在正确的方向上了。您应该使用混合流程,这样您的令牌会更安全,因为客户端无法在浏览器上访问,您可以使用刷新令牌的强大功能来提高您的网络安全性。

无需在客户端上使用oidc-client库!如果您仍然被卡住,请告诉我,我可以发布一些代码。