首页 > 其他分享 >接入jira OAuth权限流程

接入jira OAuth权限流程

时间:2023-01-08 14:12:12浏览次数:53  
标签:jira 私钥 oauth token OAuth 授权 权限 客户端

如果要在自己的系统中操作jira的api完成这些单据的创建、审批等操作,就不得不要先完成jira的第三方授权,才能在第三方系统去做这些jira的操作。
  1. 首先必须在jira系统配置客户端的相关信息,须配置几个指标:

    • 客户端访问地址需要先配置
    • Consumer key:客户端关键字(可自定义)
    • Consumer name:客户端名称(接入系统的名称)
    • Public key:公钥(自己生成公钥/私钥对)
    • Callback url:回调地址,用于jira验证登录成功之后回调到客户端系统,并传入准入令牌等信息,客户端再次请求获取access token,并将access token保存在客户端,后面再次请求jira的api就可以携带accesstoken进行请求
  2. 生成 RSA 公钥/私钥对
    在macos或者linux终端中,运行以下 openssl 命令。
    您可以在文件系统的任何位置执行此操作,但请注意,这是创建文件的位置。

生成 1024 位私钥:

openssl genrsa -out jira_privatekey.pem 1024

创建 X509 证书:

openssl req -newkey rsa:1024 -x509 -key jira_privatekey.pem -out jira_publickey.cer -days 365

将私钥(PKCS8格式)提取到 jira_privatekey.pcks8 文件中:

openssl pkcs8 -topk8 -nocrypt -in jira_privatekey.pem -out jira_privatekey.pcks8

将证书中的公钥提取到 jira_publickey.pem文件中:

openssl x509 -pubkey -noout -in jira_publickey.cer  > jira_publickey.pem
  • 最终将jira_privatekey.pcks8文件中的私钥字符串考出来,放在客户端程序。
  • 将jira_publickey.pem文件中的公钥字符串考出来,放在jira公钥配置的栏目。
  • 参考文档:Oauth授权流程
  1. 配置好jira的四个配置以后,来到客户端程序,需要在你的客户端系统中配置并保存好两个对应配置,后面需要基于此两个配置来发起授权请求:
    • consumerKey 客户端关键字(和jira配置的一致)
    • privateKey 私钥,上面生成的私钥/公钥对
  2. 客户端的后端程序提供接口,获取jira的登陆校验地址,此时后端程序中就需要用到consumerKey和privateKey两个参数,最终此后端接口返回一个授权登录的url给前端服务,由前端页面打开链接窗口。
  3. 在前端服务器页面打开的授权登录窗口中,输入jira登录密码,完成授权,此时之前配置在jira的回调地址,会把授权完成产生的oauth_token和oauth_verifier回调到客户端的后端接口程序。
  4. 客户端后端的回调方法再次根据获得的oauth_token和oauth_verifier,请求jira换取accesstoken令牌,获得令牌后并保存在服务端数据库。
  5. 完成此一系列操作后,最终此回调方法可以返回一个关闭窗口命令的字符串给前端,让前端关掉此前的授权窗口。
  6. 所有客户端后端服务需要接口有两个:

获取jira授权地址接口

@ApiOperation(value = "返回jira登录验证页面地址", notes = "返回jira登录验证页面地址", httpMethod = "GET")
    @GetMapping(value = ["/jiraLogin"])
    fun jiraLogin(): Map<String, String> {
        // 请求jira认证
        try {
            return mapOf("redirectUrl" to jiraApiService.getAuthorizeUrl())
        } catch (e: HttpResponseException) {
            Log.get().error("""JIRA 登陆失败: ${e.message}""")
            throw Exception("JIRA 登陆失败!!")
        }
    }

回调接口——在获取授权token和授权码之后调用回调函数换取accessToken

@ApiOperation(value = "jira回调地址完成授权,保存accesstoken", notes = "jira回调地址完成授权,保存accesstoken", httpMethod = "GET")
    @GetMapping(value = ["/oauth"])
    fun jiraLoginCallback(
        @RequestParam(value = "oauth_token") requestToken: String,
        @RequestParam(value = "oauth_verifier") secret: String,
        request: HttpServletRequest,
        response: HttpServletResponse
    ) {
        try {
            val token = jiraApiService.requestJiraAccessToken(requestToken, secret)
            jiraApiService.saveAccessToken(token)
        } catch (e: Exception) {
            Log.get().error("JIRA认证失败: ${e.message}")
        } finally {
            response.addHeader("Content-Type", "text/html; charset=utf-8")
            val out = response.writer
            out.write("""<script language="javascript"> setTimeout("window.close()", 500); </script>""")
            out.close()
        }
    }
  1. 流程参考地址:授权完整流程,可下载demo

标签:jira,私钥,oauth,token,OAuth,授权,权限,客户端
From: https://www.cnblogs.com/xiaopengmvp520/p/jie-rujira-oauth-quan-xian-liu-cheng.html

相关文章

  • 授权用户能查看所有名称空间的pod的权限
    签发一个证书ssl认证#进入存放ca证书的文件夹$cd/etc/kubernetes/pki/#生成私钥key$(umask077;opensslgenrsa-outhxg.key2048)#生成一个用户名为user-hxg的......
  • 安卓应用漏洞学习-Content Provider组件的自定义权限
    前期回顾漏洞免费实战部分-安卓应用层getLastPathSegment函数问题漏洞实战部分2-安卓应用ZipEntry对象问题实战漏洞实战部分3-ContentProvider组件的openFile接口问题......
  • Spring Security认证授权练手小项目 腾讯视频VIP权限管理功能
    腾讯视频VIP权限管理​​1、项目功能视频演示​​​​2、需求与设计​​​​1、需求​​​​2、功能概要​​​​3、接口设计​​​​3、项目源码结构​​​​4、项目源码下......
  • Vue:TDesign Starter 自定义指令控制权限
    Vue支持自定义指令,具体API说明可以参考下面两个文档:Vue.directive(id,[definition])Vue自定义指令1.钩子函数Vue.directive提供了几个钩子函数,分别是:bindi......
  • 通用权限系统:(一)搭建环境
    一、项目介绍1、介绍权限管理是所有后台系统都会涉及的一个重要组成部分,而权限管理的核心流程是相似的,如果每个后台单独开发一套权限管理系统,就是重复造轮子,是人力的极大......
  • 通用权限系统:(2)前端基础知识
    一、前端开发和前端开发工具1、前端开发介绍前端工程师“Front-End-Developer”源自于美国。大约从2005年开始正式的前端工程师角色被行业所认可,到了2010年,互联网开始全......
  • Linux权限
    Linux下关于用户分为root系统普通三种用户 区分为id号0为root1-999是系统1000-60000是普通 用户权限u分区权限g其他o文件都有权限 权限一般分为3种分别......
  • 11G RAC环境GRID目录及文件错误权限的修复
    111.2.0.4环境测试1.1 测试前的资源状态下面查看一下测试前的资源状态,确保每个资源的状态都是正常的。[grid@rac112042~]$crsctlstatusresource-t-----------------......
  • Linux的权限管理
    一、权限概述总述:linux系统一般将文件可存/取访问的身份分为3个类别:owner、group、others,且3种身份各有read、write、execute等权限。1、权限介绍什么是权限?在多用户(可......
  • 第03章 用户与权限管理
    第03章用户与权限管理1.用户管理1.1登录MySQL服务器启动MySQL服务后,可以通过mysql命令来登录MySQL服务器,命令如下:mysql–hhostname|hostIP–Pport–uusername......