基于servicecomb-mesher的网关认证鉴权方案

背景

Servicecomb-mesher 是 Apache servicecomb 的微服务网格项目。Mesher 实际上在应用层作为一个代理,拦截并代替业务服务发起和接收请求,为服务添加治理功能。Mesher同时可以也可以用作微服务的网关,在网关模式下,Mesher需要提供为用户实现的认证功能提供框架能力。现在比较流行的一种认证模式是:用户不用再注册账号,直接利用已有的Google,Github, QQ等账号登录,mesher作为网关应当实现第三方登录功能。提高开发者的开发效率,和用户的使用体验。

目前oauth2授权框架使用最广泛,上述过程的实质是:mesher使用oauth2协议获得第三方应用访问其用户信息(我们关注的是唯一信息,可能是用户名,也可能是OpenID、UserID等)的授权,获取该用户信息后,用该用户信息实现认证。

开发者如何使用Mesher OAuth2 认证能力

以通过Github账号认证为例:

  1. 注册你的应用,访问这个链接,填写相应的信息,其中callback_url填写为http(s)://yourdomain.com/oauth2_callback。获取ClientID,和ClientSecret。

  2. 配置Mesher,在proxy/handler/oauth2 目录oauth2_handler文件中,添加如下代码,完成对mesher的配置:

Use(&OAuth2{
   
		GrantType: "authorization_code",
		UseConfig: &oauth2.Config{
   
			ClientID:     "",           // (required, string) your client_ID
			ClientSecret: "",           // (required, string) your client_Secret
			Scopes:       []string{
   ""}, // (optional, string) scope specifies requested permissions
			RedirectURL:  "",           // (required, string) URL to redirect users going through the OAuth2 flow
			Endpoint: oauth2.Endpoint{
    // (required, string) your auth server endpoint
				AuthURL:  "https://github.com/login/oauth/authorize",
			    TokenURL: "https://github.com/login/oauth/access_token",
			},
		},
		Authenticate: func(userinfo string, req *http.Request) error {
   
			return nil
		},
	})
  1. 添加认证鉴权功能的实现。当用户登录github.com成功并授权后,用户会rediect到mesher, mesher将获取用户在gith
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值