如何在Web Api 2中使用ThinkTecture IdentityServer 3

时间:2015-07-27 14:52:37

标签: security authentication asp.net-web-api2 thinktecture-ident-server thinktecture

我一直在阅读很多关于如何在Asp.Net Web Api 2中实现完整身份验证和授权系统的内容,其中包括注册,发送电子邮件确认,发出访问令牌和刷新令牌等。我已成功完成所有操作然而,毕竟,对于每一个项目来说,看起来都是必须要做的事情。

我仍然不确定,但我相信“Thinktecture IdentityServer”是一个包装在一起提供所有这些,我是对的吗?

如果是的话,有人能告诉我(以非常直接的方式)我如何创建一个新的Web Api项目并使用这个软件包轻松获得上述所有功能?

2 个答案:

答案 0 :(得分:4)

Thinktecture身份服务器v3是高度可配置模块的集合,因此需要编写大量代码才能按照您的需要进行设置。 Thinktecture维基有一个很好的“你好世界”。可能足以让你前进的例子:

Hello world

之后,下载样本,找到最符合您情况的样本,并在此基础上进行构建。特别是,您需要设置一个数据库来保存您的注册用户。相关的会员重启'项目通常是您用来进行数据访问的项目,以及' MembershipReboot.Ef'将使用EntityFramework自动创建数据库的插件。

MembershipReboot是您设置要使用的电子邮件事件的地方。

Email config in membership reboot

答案 1 :(得分:2)

这是使用您单独设置的identityServer3:

(IdentityServer3有一些开箱即用的服务器设置示例,可能对您来说足够好,或者可能只需要轻微的配置)

Nuget Microsoft OpenID Connect(我认为它名为:Microsoft.Owin.Security.OpenIdConnect)

将OpenID Connect中间件(也在Startup.cs中)指向IdentityServer。

app.UseOpenIdConnectAuthentication(new OpenIdConnectAuthenticationOptions
{
    Authority = "https://myIdsrv3Path/identity",
    ClientId = "myapi",
    RedirectUri = "https://myIdsrv3Path/", // or 
    ResponseType = "id_token",

    SignInAsAuthenticationType = "Cookies"
});

在IdentityServer3中,将接受的客户端设置为包含“myapi”,以及您需要的声明。

有更多关于授权的解释,但这可以解答您获得api的基本问题。

请参阅IdentityServer3文档: https://identityserver.github.io/Documentation/docsv2/overview/mvcGettingStarted.html

向下滚动到以下部分:添加和配置OpenID Connect身份验证中间件。