"use strict";(self.webpackChunkelementary_public_docs=self.webpackChunkelementary_public_docs||[]).push([[16240],{15680:(e,n,t)=>{t.d(n,{xA:()=>u,yg:()=>y});var a=t(96540);function r(e,n,t){return n in e?Object.defineProperty(e,n,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[n]=t,e}function s(e,n){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);n&&(a=a.filter((function(n){return Object.getOwnPropertyDescriptor(e,n).enumerable}))),t.push.apply(t,a)}return t}function o(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var c=a.createContext({}),p=function(e){var n=a.useContext(c),t=n;return e&&(t="function"==typeof e?e(n):o(o({},n),e)),t},u=function(e){var n=p(e.components);return a.createElement(c.Provider,{value:n},e.children)},d="mdxType",l={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},m=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,s=e.originalType,c=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=p(t),m=r,y=d["".concat(c,".").concat(m)]||d[m]||l[m]||s;return t?a.createElement(y,o(o({ref:n},u),{},{components:t})):a.createElement(y,o({ref:n},u))}));function y(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var s=t.length,o=new Array(s);o[0]=m;var i={};for(var c in n)hasOwnProperty.call(n,c)&&(i[c]=n[c]);i.originalType=e,i[d]="string"==typeof e?e:r,o[1]=i;for(var p=2;p{t.r(n),t.d(n,{assets:()=>c,contentTitle:()=>o,default:()=>l,frontMatter:()=>s,metadata:()=>i,toc:()=>p});var a=t(58168),r=(t(96540),t(15680));const s={sidebar_position:3},o="\u8ba4\u8bc1\u6587\u6863",i={unversionedId:"model-as-a-service/AI_Studio/API/RAG_openapi/authentication",id:"model-as-a-service/AI_Studio/API/RAG_openapi/authentication",title:"\u8ba4\u8bc1\u6587\u6863",description:"- \u670d\u52a1\u7aef\u4f7f\u7528 HMAC \u65b9\u5f0f\u8fdb\u884c\u8eab\u4efd\u8ba4\u8bc1\uff0c\u9700\u8981\u5728\u8bf7\u6c42Header\u4e2d\u989d\u5916\u6dfb\u52a0\u4e24\u4e2a\u5b57\u6bb5 X-Date \u548c Authorization.",source:"@site/docs/model-as-a-service/AI_Studio/API/RAG_openapi/authentication.md",sourceDirName:"model-as-a-service/AI_Studio/API/RAG_openapi",slug:"/model-as-a-service/AI_Studio/API/RAG_openapi/authentication",permalink:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/authentication",draft:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/model-as-a-service/AI_Studio/API/RAG_openapi/authentication.md",tags:[],version:"current",sidebarPosition:3,frontMatter:{sidebar_position:3},sidebar:"tutorialSidebar",previous:{title:"API\u6982\u89c8",permalink:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/apis"},next:{title:"\u521b\u5efa\u77e5\u8bc6\u5e93",permalink:"/help/docs/model-as-a-service/AI_Studio/API/RAG_openapi/dataset/create-dataset"}},c={},p=[],u={toc:p},d="wrapper";function l(e){let{components:n,...t}=e;return(0,r.yg)(d,(0,a.A)({},u,t,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("h1",{id:"\u8ba4\u8bc1\u6587\u6863"},"\u8ba4\u8bc1\u6587\u6863"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("p",{parentName:"li"},"\u670d\u52a1\u7aef\u4f7f\u7528 HMAC \u65b9\u5f0f\u8fdb\u884c\u8eab\u4efd\u8ba4\u8bc1\uff0c\u9700\u8981\u5728\u8bf7\u6c42Header\u4e2d\u989d\u5916\u6dfb\u52a0\u4e24\u4e2a\u5b57\u6bb5 ",(0,r.yg)("strong",{parentName:"p"},"X-Date")," \u548c ",(0,r.yg)("strong",{parentName:"p"},"Authorization"),".")),(0,r.yg)("li",{parentName:"ul"},(0,r.yg)("p",{parentName:"li"},"\u7528\u6237\u9700\u8981\u5148\u4eceSenseCore\u7684",(0,r.yg)("a",{parentName:"p",href:"http://console.sensecore.cn"},"\u63a7\u5236\u53f0"),"\u9996\u9875\u83b7\u53d6AccessKey\u548cSecretKey\uff0c\u7136\u540e\u901a\u8fc7\u5982\u4e0b\u65b9\u5f0f\u8ba1\u7b97\u4e0a\u8ff0\u4e24\u4e2a\u5b57\u6bb5\u7684\u503c."))),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"bash\u793a\u4f8b")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-bash"},'#!/bin/bash\n\naccess_key=\'*****\'\nsecret_key=\'*****\'\n\nxdate=$(LC_TIME=en_US date -u +"%a, %d %b %Y %H:%M:%S GMT")\ndata="x-date: ${xdate}"\n\n# \u751f\u6210\u7b7e\u540d\nsign=$(echo -n "$data" | openssl dgst -sha256 -hmac "$secret_key" -binary | base64)\nauth="hmac accesskey=\\"${access_key}\\", algorithm=\\"hmac-sha256\\", headers=\\"x-date\\", signature=\\"${sign}\\""\n\n# \u8c03\u8bd5\u8f93\u51fa\necho "X-Date: $xdate"\necho "Authorization: $auth"\n\n# \u6267\u884c\u8bf7\u6c42\ncurl \'https://aidmp.cn-sh-01.sensecoreapi.cn/studio/rag/data/v1/applications/3e0b067fb6964d23b967d01f2133a5ab/releases:show\' \\\n -H "X-Date: $xdate" \\\n -H "Authorization: $auth" \\\n -H "Content-Type: application/json" \\\n -X GET\n\n')),(0,r.yg)("blockquote",null,(0,r.yg)("p",{parentName:"blockquote"},"\u4e0a\u8ff0\u547d\u4ee4\u9700\u4f7f\u7528bash/zsh\u6267\u884c\uff0c\u82e5\u4f7f\u7528sh\u6267\u884c\uff0c\u5f97\u5230\u7684\u7b7e\u540d\u503c\u4f1a\u6709\u8bef")),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"python \u793a\u4f8b")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-python"},'import hmac\nimport hashlib\nimport base64\nfrom datetime import datetime, timezone\n\n\ndef gen_auth_header(access_key: str, secret_key: str):\n """\n \u751f\u6210\u5305\u542b X-Date \u548c Authorization \u7684 HTTP \u5934\u90e8\u3002\n\n :param access_key: API \u7684 Access Key\n :param secret_key: API \u7684 Secret Key\n :return: \u5305\u542b X-Date \u548c Authorization \u7684\u5b57\u5178\n """\n # \u751f\u6210 X-Date \u65f6\u95f4\u6233\n x_date = datetime.now(timezone.utc).strftime("%a, %d %b %Y %H:%M:%S GMT")\n\n # \u6784\u9020\u7b7e\u540d\u5185\u5bb9\n sign_content = f"x-date: {x_date}"\n\n # \u751f\u6210\u7b7e\u540d\n signature = base64.b64encode(\n hmac.new(secret_key.encode(), sign_content.encode(), hashlib.sha256).digest()\n ).decode()\n\n # \u6784\u9020 Authorization \u5934\n auth = (\n f\'hmac accesskey="{access_key}", algorithm="hmac-sha256", \'\n f\'headers="x-date", signature="{signature}"\'\n )\n\n return {\n "X-Date": x_date,\n "Authorization": auth,\n }\n\n\n# \u793a\u4f8b\u8c03\u7528\nif __name__ == "__main__":\n # \u793a\u4f8b Access Key \u548c Secret Key\n access_key = "****"\n secret_key = "****"\n\n # \u8c03\u7528\u51fd\u6570\u751f\u6210\u5934\u90e8\n headers = gen_auth_header(access_key, secret_key)\n\n # \u6253\u5370\u7ed3\u679c\n print("Generated Headers:")\n for key, value in headers.items():\n print(f"{key}: {value}")\n\n # \u793a\u4f8b\u8bf7\u6c42\n import requests\n\n url = "https://aidmp.cn-sh-01.sensecoreapi.cn/studio/rag/data/v1/applications/3e0b067fb6964d23b967d01f2133a5ab/releases:show"\n response = requests.get(url, headers=headers)\n\n print("\\nResponse:")\n print(f"Status Code: {response.status_code}")\n print(f"Response Body: {response.text}")\n')),(0,r.yg)("p",null,(0,r.yg)("strong",{parentName:"p"},"golang \u793a\u4f8b")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-go"},'package main\n\nimport (\n "crypto/hmac"\n "crypto/sha256"\n "encoding/base64"\n "fmt"\n "io"\n "net/http"\n "time"\n)\n\n// genAuthHeader \u751f\u6210 HTTP \u5934\u90e8\nfunc genAuthHeader(accessKey, secretKey string) (map[string]string, error) {\n xDate := time.Now().UTC().Format(http.TimeFormat)\n signContent := "x-date: " + xDate\n\n mac := hmac.New(sha256.New, []byte(secretKey))\n mac.Write([]byte(signContent))\n signature := base64.StdEncoding.EncodeToString(mac.Sum(nil))\n\n auth := fmt.Sprintf(\n `hmac accesskey="%s", algorithm="hmac-sha256", headers="x-date", signature="%s"`,\n accessKey, signature,\n )\n\n return map[string]string{\n "X-Date": xDate,\n "Authorization": auth,\n }, nil\n}\n\nfunc main() {\n accessKey := "****"\n secretKey := "****"\n\n headers, err := genAuthHeader(accessKey, secretKey)\n if err != nil {\n fmt.Println("Error generating headers:", err)\n return\n }\n\n url := "https://aidmp.cn-sh-01.sensecoreapi.cn/studio/rag/data/v1/applications/3e0b067fb6964d23b967d01f2133a5ab/releases:show"\n req, _ := http.NewRequest("GET", url, nil)\n for key, value := range headers {\n req.Header.Set(key, value)\n }\n\n resp, err := http.DefaultClient.Do(req)\n if err != nil {\n fmt.Println("Request failed:", err)\n return\n }\n defer resp.Body.Close()\n\n body, _ := io.ReadAll(resp.Body)\n fmt.Printf("Status Code: %d\\nResponse Body: %s\\n", resp.StatusCode, string(body))\n}\n')))}l.isMDXComponent=!0}}]);