写点什么

接口文档 Swagger 接入统一授权中心 IdentityServer4

作者:为自己带盐
  • 2021 年 12 月 27 日
  • 本文字数:1896 字

    阅读完需:约 6 分钟

写在前面

前阵子,因为要和其他公司合作搞一个项目,以 Rest 接口的方式提供一部分我们的数据,所以做了一个 webapi 的项目,授权中心接入的是统一的地址。

在开发过程中,接口文档使用的是 DotnetCore 默认的 Swagger,为了测试方便,便将 Swagger 也接入了 Id4 授权中心。

服务端(授权中心)配置

这一部分由于不是我们做的,所以就不写太多了,引用的也是 Id4 的官方 SDK,配置也比较容易,官方文档的地址是:https://identityserver4.readthedocs.io/en/latest/,也有中文文档,但我感觉中文的版本比较老,更新也不勤,还不如借助翻译软件,硬看英文原文。

最后配置好后,可以看到这个界面,就是配置成功了,其余的就是在 Id4 的框架约定下,基于业务的调整了


Swagger 配置

因为 DotnetCore 框架的服务大都是可配置的,这里将 Swagger 的默认配置,单独提取到配置文件里。

通过引用 Microsoft.Extensions.Configuration Microsoft.Extensions.DependencyInjection 两个命名空间,可以单独提取出有关 Swagger 的配置。然后,可以配置 IdentityServer 相关的服务。

public static void ConfigureSwagger(this IServiceCollection services, IConfiguration configuration){  services.AddSwaggerGen(c =>                         {                           c.SwaggerDoc("v1", new OpenApiInfo                                        {                                          Title = "CIP.API",                                          Version = "V1",                                          Description = "客户接口中心"                                          });
c.OperationFilter<AddResponseHeadersFilter>(); c.OperationFilter<AppendAuthorizeToSummaryOperationFilter>(); c.OperationFilter<SecurityRequirementsOperationFilter>();
//接入identityserver4 c.AddSecurityDefinition("oauth2", new OpenApiSecurityScheme { Type = SecuritySchemeType.OAuth2, Flows = new OpenApiOAuthFlows { Implicit = new OpenApiOAuthFlow {
AuthorizationUrl = new Uri($"{configuration.GetSection("IdentityServer4")["authUrls"]}/connect/authorize"), Scopes = new Dictionary<string, string> { { //"IdentityServer.API","IdentityServer4 API " "IdentityServer.API","cipapi" } } } } }); c.IncludeXmlComments(XmlAPIFilePath, true);
});}
复制代码

然后,在 StartUp.cs 文件里,注入配置好的服务

public IConfiguration Configuration { get; }public Startup(IConfiguration configuration){  Configuration = configuration;}
public void ConfigureServices(IServiceCollection services){ //注入Swagger配置 services.ConfigureSwagger(Configuration); //配置其他服务...}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILogger<Startup> logger){ app.UseAuthentication(); app.UseAuthorization();}
复制代码

如此,在访问接口文档,就可以看到逾期的结果了。

在非授权的情况下,访问接口会直接返回 401

而授权之后,就可以正常访问了




其实 IdentityServer4 在 dotnet 的项目里,使用的还是很多的,也很好用,基本配置没有问题的话,跑通整个的授权流程还是非常方便的。

发布于: 2 小时前
用户头像

学着码代码,学着码人生。 2019.04.11 加入

狂奔的小码农

评论

发布
暂无评论
接口文档Swagger接入统一授权中心IdentityServer4