# 微服务学习_C#进阶之学习设计微服务:api认证

本文介绍了作者在学习微服务过程中,为个人站点设计的API认证方案。采用JWT进行身份验证,利用Ocelot作为微服务网关,并通过客户端模式的OAuth2实现实现认证。文中详细讲解了从创建认证服务器,前端获取及存储token,到Ocelot的配置,以及处理token过期的思路,分享了整个实现过程。
摘要由CSDN通过智能技术生成
809b55ac700babdad2638c8331cbe3ea.png

前言
最近在学习微服务,所以把自己的个人站点https://www.ttblog.site/拆分成微服务。目前正在思考微服务里面的认证与授权,网上百度到都是根据用户名和密码来实现的,考虑到实际的原因,我的个人站点是最先访问不需要登录,当执行写入或更改操作时才需要用户名和密码,所以我自己思考了一个方案,这里分享一下,设计难免有很多不合理之处,大家可以予以批评。文档
我开始做的时候,对认证授权不是很理解,所以我在网上百度并且在博客园和开源中国提了一下问。https://www.oschina.net/question/2859520_2319077和https://q.cnblogs.com/q/129422/。并且看了很多文章,大多数使用的是IdentityServer4,但是我发现这个比较复杂,貌似还要安装一些认证,所以选择了使用JWT。并且了解了一下OAuth2,我觉得我用的应该属于里面的客户端模式https://www.jianshu.com/p/84a4b4a1e833。大概都了解之后,我就开始在项目里集成了jwt和ocelot。实战
首先创建了一个认证服务器
BlogAuthApi
然后一个网关
BlogGateway
最后一个
BlogWebApi
我的思路就是js判断是否存有token,如果没有在请求认证服务器Auth,,返回一个token,存入浏览器,然后之后通过token去访问webapi。1,请求token
我这里使用的微服务网关属于Ocelot,请求时通过网关转发到认证服务器获取token,如下代码生成token:

public class Jwt

{

///

/// 返回jwt模型

///

///

public static JwtOption GetOption()

{

JwtOption option = ConfigureProvider.BuildModel("jwtOption");

return option;

}

///

/// 返回SymmetricSecurityKey

///

///

public static SymmetricSecurityKey GetSymmetricSecurityKey()

{

JwtOption option = GetOption();

return GetSymmetricSecurityKey(option.Secret);

}

///

/// 返回SymmetricSecurityKey

///

///

public static SymmetricSecurityKey GetSymmetricSecurityKey(string secret)

{

return new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));

}

///

/// 返回token参数模型

///

///

public static TokenValidationParameters GetTokenValidation()

{

JwtOption option = GetOption();

var tokenValidationParameters = new TokenValidationParameters

{

ValidateIssuerSigningKey = true,

IssuerSigningKey = GetSymmetricSecurityKey(option.Secret),

ValidateIssuer = true,

ValidIssuer = o

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值