您的位置:首页 > 编程语言 > ASP

ASP.NET Core的身份认证框架IdentityServer4--(1)服务配置

2017-12-14 13:40 1836 查看
官网文档地址:点我点我

准备

创建一个名为
IdentityServer
的ASP.NET Core Web Api 项目,端口5000

创建一个名为
Api
的ASP.NET Core Web Api 项目,端口5001

创建一个名为
Web
的应用程序,端口5002

基本配置

首先创建一个新的ASP.NET Core项目。



然后选择“空白”选项。



注:这里创建空的应用程序是为了后面方便引入UI界面

接下来,使用nuget添加
IdentityServer4




或者,也可以使用软件包管理器控制台通过运行以下命令来添加依赖项

Install-Package IdentityServer4


IdentityServer
中使用通常的模式来配置和添加服务到ASP.NET Core Host

ConfigureServices
中,所有的服务必须配置并且依赖注入到系统中。

Configure
中,中间件被添加到HTTP管道中。

public void ConfigureServices(IServiceCollection services)
{
//配置身份服务器与内存中的存储,密钥,客户端和资源
services.AddIdentityServer().AddDeveloperSigningCredential();
}
public void Configure(IApplicationBuilder app, IHostingEnvironment env)
{
if (env.IsDevelopment())
{
app.UseDeveloperExceptionPage();
}
//添加到HTTP管道中。
app.UseIdentityServer();

app.Run(async (context) =>
{
await context.Response.WriteAsync("Hello World!");
});
}


AddIdentityServer
方法在依赖注入系统中注册IdentityServer,它还会注册一个基于内存存储的运行时状态,这对于开发场景非常有用,对于生产场景,您需要一个持久化或共享存储,如数据库或缓存。

扩展的
AddDeveloperSigningCredential
用于签署令牌创建临时密钥。

修改hosting

修改启动端口,打开Properties下的launchSettings.json修改
applicationUrl
中的端口改为5000,注:这里修改启动端口是为了方便调试



使用客户端凭证保护API

在这种情况下,我们将定义一个API和一个想要访问它的客户端。客户端将在
IdentityServer
上请求访问令牌,并使用它来访问API。

IdentityServer
项目中新建个
Config.cs
类,并添加以下代码:

public static IEnumerable<ApiResource> GetApiResources()
{
return new List<ApiResource>
{
new ApiResource("api1", "My API")
};
}


定义客户端

定义一个可以访问这个API的客户端。对于这种情况,客户端将不具有交互式用户,并将使用
IdentityServer
的所有客户端密钥进行身份验证。在
Config.cs
中添加如下代码:

public static IEnumerable<Client> GetClients()
{
return new List<Client>
{
new Client
{
ClientId  =  "client",
//没有交互式用户,使用clientid / secret进行身份验证
AllowedGrantTypes  =  GrantTypes.ClientCredentials,
//秘密认证
ClientSecrets  =
{
new Secret("secret".Sha256())
},
//客户端可以访问的范围
AllowedScopes  =  {"api1"}
}
};
}


注册IdentityServer服务

要配置
IdentityServer
以便使用定义好的访问控制,您需要向该
ConfigureServices
方法添加代码。您可以使用方便的扩展方法 ,将相关的存储和数据添加到DI系统中:

public void ConfigureServices(IServiceCollection services)
{
//配置身份服务器与内存中的存储,密钥,客户端和资源
services.AddIdentityServer()
.AddDeveloperSigningCredential()
.AddInMemoryApiResources(Config.GetApiResources())
.AddInMemoryClients(Config.GetClients());
}


运行项目并在浏览器中访问:
http://localhost:5000/.well-known/openid-configuration
,可以看到所有的文档。这将被您的客户端和API用于下载必要的配置数据。



  
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐