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

How to use ThinkTecture IdentityServer 3 in Web Api 2

我已经阅读了很多有关如何在 Asp.Net Web Api 2 中实施完整身份验证和授权系统的信息,其中包括注册、发送电子邮件确认、颁发访问令牌和刷新令牌,等等。毕竟,我已经成功地完成了所有这些工作,但是,对于每个项目都必须这样做,这看起来是一个不必要的开销。

我仍然不确定,但我相信 "Thinktecture IdentityServer" 是一个组合在一起提供所有这些的软件包,对吗?

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

Thinktecture 身份服务器 v3 是高度可配置模块的集合,因此需要编写大量代码来按照您的需要进行设置。 Thinktecture wiki 有一个很好的 'hello world' 示例,可能足以让您继续:

Hello world

之后,下载示例,找到最符合您情况的示例,并以此为基础进行构建。特别是,您需要建立一个数据库来保存您的注册用户。相关的 'MembershipReboot' 项目通常是您用来进行数据访问的项目,还有 'MembershipReboot.Ef' 插件将使用 EntityFramework.

自动创建您的数据库

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

Email config in membership reboot

这里是使用您单独设置的 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 身份验证中间件的部分。