首页 > 其他分享 >浙里办 单点登录之获取token

浙里办 单点登录之获取token

时间:2023-12-30 15:48:39浏览次数:24  
标签:ch 单点 浙里 request token BG using curl string

C#代码

using System;
using System.IO;
using System.Net;
using System.Text;
using System.Security.Cryptography;

class Program
{
    static void Main()
    {
        string accessKey = "你的ak";
        string secret = "你的sk";
        string path = "/restapi/prod/IC33000020220329000007/uc/sso/access_token";
        string queryString = ""; // 如果有查询参数,这里应该是URL编码后的查询字符串
        string time = DateTime.UtcNow.ToString("r"); // GMT格式的时间

        // 构建待签名的字符串
        string signString = "POST\n" + path + "\n" + queryString + "\n" + accessKey + "\n" + time + "\n";

        // 使用HMAC SHA256进行签名
        byte[] secretBytes = Encoding.UTF8.GetBytes(secret);
        byte[] signStringBytes = Encoding.UTF8.GetBytes(signString);
        string signature;
        using (var hmac = new HMACSHA256(secretBytes))
        {
            byte[] hash = hmac.ComputeHash(signStringBytes);
            signature = Convert.ToBase64String(hash);
        }

        // 准备POST数据  把xxxxxx换成你的appId
        string postData = "{\"ticketId\":\"debug_tk_e4a0dc3fcc8d464ba336b9bcb1ba2072\",\"appId\":\"xxxxxx\"}";
        byte[] postDataBytes = Encoding.UTF8.GetBytes(postData);

        // 创建HttpWebRequest对象
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://ibcdsg.zj.gov.cn:8443" + path);
        request.Method = "POST";
        request.ContentType = "application/json";
        request.Headers.Add("X-BG-HMAC-ALGORITHM", "hmac-sha256");
        request.Headers.Add("X-BG-HMAC-ACCESS-KEY", accessKey);
        request.Headers.Add("X-BG-DATE-TIME", time);
        request.Headers.Add("X-BG-HMAC-SIGNATURE", signature);
        request.ContentLength = postDataBytes.Length;

        // 写入POST数据
        using (Stream stream = request.GetRequestStream())
        {
            stream.Write(postDataBytes, 0, postDataBytes.Length);
        }

        // 获取响应
        string responseContent = "";
        using (HttpWebResponse response = (HttpWebResponse)request.GetResponse())
        using (Stream stream = response.GetResponseStream())
        using (StreamReader reader = new StreamReader(stream))
        {
            responseContent = reader.ReadToEnd();
        }

        Console.WriteLine(responseContent);
    }
}

PHP代码

<?php

$accessKey = "你的ak";
$secret = "你的sk";
$time = gmdate('D, d M Y H:i:s T'); // GMT格式的时间
$queryString = ""; // 如果是GET方法,且有查询参数,这里应该是URL编码后的查询字符串
$path = '/restapi/prod/IC33000020220329000007/uc/sso/access_token';

// 构建待签名的字符串
$signString = "POST" . "\n" . $path . "\n" . $queryString . "\n" . $accessKey . "\n" . $time . "\n";

// 使用HMAC SHA256进行签名
$hash = hash_hmac('sha256', $signString, $secret, true);

// 将结果转换为Base64
$signature = base64_encode($hash);

// 准备POST数据和HTTP头部
$url = 'https://ibcdsg.zj.gov.cn:8443' . $path; // 目标URL
$postData = array(
    'ticketId' => 'debug_tk_e4a0dc3fcc8d464ba336b9bcb1ba2072',
    'appId' => '你的appId'
);
$postDataJson = json_encode($postData);

$headers = array(
    'X-BG-HMAC-ALGORITHM: hmac-sha256',
    'Content-Type: application/json',
    'X-BG-HMAC-ACCESS-KEY: ' . $accessKey,
    'X-BG-DATE-TIME: ' . $time,
    'X-BG-HMAC-SIGNATURE: ' . $signature,
);

// 发送请求(使用cURL)
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postDataJson); // 发送JSON数据
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);

$response = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch);

echo $response;

标签:ch,单点,浙里,request,token,BG,using,curl,string
From: https://www.cnblogs.com/ktsm/p/17936417.html

相关文章

  • 单点登录
    什么事单点登录?单点登录(SingleSign-On,简称SSO)是一种企业业务整合的解决方案之一,用于实现用户在多个应用系统中的单次登录和跨应用系统的无缝访问。在单点登录系统中,用户只需要在某个应用系统中进行身份认证,就可以访问其他信任的应用系统,而无需再次输入用户名和密码。这种机制可以......
  • 01的token的年度总结
    大家好,我是token,一个热爱.NET的普通人,同样我来自湖南衡阳,再次之前我已经遇到非常多的湖南衡阳的老乡,比如李哥。​ 在这里一年中,我的成长也是非常迅速的,每一年的的每一天,感觉自己的知识点在不断的扩展,在2020年实习的时候由于公司是.NET所以从java转.NET,从进入.NET的懵懂无知,到现在......
  • fastapi项目 04-JWT-Token
    前言对于flask,有 flask-jwt-extended插件快速实现生成登录token。fastapi-jwt-auth .它的灵感来自于flask-jwt-extended。官网教程地址https://indominusbyte.github.io/fastapi-jwt-auth/usage/basic/。1.fastapi-jwt-auth演示首先需要通过fastapi库生成登录token:pipi......
  • 【已解决-实操篇】SaTokenException: 非Web上下文无法获取Request问题解决-实操篇
    在上一篇《【理论篇】SaTokenException:非Web上下文无法获取Request问题解决-理论篇》中,凯哥(凯哥Java)介绍了产生这个问题的源码在哪里,以及怎么解决的方案。没有给出实际操作步骤。本文,凯哥就通过threadLocal方案来解决。一、创建用于存放共享变量的对象代码如下:packagecom.kai......
  • 幽灵和熔断+LR/SC的实现和使用+Consistent和Coherent+memory 属性 Device-nGnRnE+IP-X
    幽灵和熔断幽灵和熔断是基于瞬态指令流的缓存侧信道攻击。在瞬态指令流中被执行的内存加载指令如果将一个数据带入了缓存,则即使流水线回滚期间处理器丢弃了该指令返回的访存结果,已经被修改的缓存状态却无法撤销。由此,攻击者可以通过监测缓存的变化来推断受害者程序的访存地址,如果......
  • 16 json web token的基本介绍
    jwt全拼是jsonwebtoken。就是服务端给客户端一个加密的字符串。这个字符串中包含了一些信息,比如用户信息等。浏览器每次访问服务端时候,会携带这个字符串。然后服务的获取这个字符串后,通过解密,就可以获取携带的信息,比如用户信息等。这个加密的字符串,包含3部分内容,就是头部+负载+......
  • Guava的TypeToken在泛型编程中的应用
    第1章:引言在Java世界里,泛型是个相当棒的概念,能让代码更加灵活和类型安全。但是,泛型也带来了一些挑战,特别是当涉及到类型擦除时。这就是TypeToken大显身手的时候!作为Java程序员的咱们,都知道泛型可以让代码更加通用,但同时也可能会导致一些类型信息在运行时丢失,这就是所谓的类型擦......
  • python+excel接口自动化获取token并作为请求参数进行传参操作
    1、登录接口登录后返回对应token封装:importjsonimportrequestsfromutil.operation_jsonimportOperationJsonfrombase.runmethodimportRunMethodclassOperationHeader:def__init__(self,response):self.response=json.loads(response)defget_response_token(......
  • 单点登录业务场景和使用流程
    单点登录:己方系统(a)域名链接单点登录提供方(b)的登录在b页面上进行账号密码的登录操作,将登录信息转发到a系统的登录接口,而后a系统发送请求前往b系统的登录获取token在获取token的时候a方便可将用户信息和token一起返回,也可多写一个使用token换取用户身份信息的接口进行返回,b系统......
  • SSO单点登录源码解析
    单点登录:用户在单点登录成功后,会访问某一平台模块,1. 向客户端发送一个请求(免密登录接口),请求客户端接口会携带一个ticket,类似于:http//:ip:port:xxx?ticket=xxxx1. 这个请求会被客户端配置的EKPSSOCLIENT的过滤器拦截,读取配置文件sso-config.properties,获取过滤器链(CASURLFilter、Us......