"use strict";(self.webpackChunkelementary_public_docs=self.webpackChunkelementary_public_docs||[]).push([[15709],{15680:(e,n,t)=>{t.d(n,{xA:()=>s,yg:()=>u});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 o(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 i(e){for(var n=1;n=0||(r[t]=e[t]);return r}(e,n);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,t)&&(r[t]=e[t])}return r}var p=a.createContext({}),g=function(e){var n=a.useContext(p),t=n;return e&&(t="function"==typeof e?e(n):i(i({},n),e)),t},s=function(e){var n=g(e.components);return a.createElement(p.Provider,{value:n},e.children)},m="mdxType",c={inlineCode:"code",wrapper:function(e){var n=e.children;return a.createElement(a.Fragment,{},n)}},d=a.forwardRef((function(e,n){var t=e.components,r=e.mdxType,o=e.originalType,p=e.parentName,s=l(e,["components","mdxType","originalType","parentName"]),m=g(t),d=r,u=m["".concat(p,".").concat(d)]||m[d]||c[d]||o;return t?a.createElement(u,i(i({ref:n},s),{},{components:t})):a.createElement(u,i({ref:n},s))}));function u(e,n){var t=arguments,r=n&&n.mdxType;if("string"==typeof e||r){var o=t.length,i=new Array(o);i[0]=d;var l={};for(var p in n)hasOwnProperty.call(n,p)&&(l[p]=n[p]);l.originalType=e,l[m]="string"==typeof e?e:r,i[1]=l;for(var g=2;g{t.r(n),t.d(n,{assets:()=>p,contentTitle:()=>i,default:()=>c,frontMatter:()=>o,metadata:()=>l,toc:()=>g});var a=t(58168),r=(t(96540),t(15680));const o={sidebar_position:1,title:"\u63a5\u53e3\u9274\u6743"},i="\u63a5\u53e3\u9274\u6743",l={unversionedId:"model-as-a-service/nova/overview/Authorization",id:"model-as-a-service/nova/overview/Authorization",title:"\u63a5\u53e3\u9274\u6743",description:"\u6ce8\u610f\uff1a\u5e73\u53f0\u5df2\u652f\u6301API Key\u8c03\u7528\uff0c\u8bf7\u7528\u6237\u4fdd\u7ba1\u597d\u81ea\u5df1\u7684API Key\uff0c\u5728ModelStudio \u7ba1\u7406\u4e2d\u5fc3 API Key\u7ba1\u7406\u8fdb\u884c\u5bc6\u94a5\u7684\u521b\u5efa\u64cd\u4f5c",source:"@site/docs/model-as-a-service/nova/overview/Authorization.md",sourceDirName:"model-as-a-service/nova/overview",slug:"/model-as-a-service/nova/overview/Authorization",permalink:"/help/docs/model-as-a-service/nova/overview/Authorization",draft:!1,editUrl:"https://github.com/facebook/docusaurus/tree/main/packages/create-docusaurus/templates/shared/docs/model-as-a-service/nova/overview/Authorization.md",tags:[],version:"current",sidebarPosition:1,frontMatter:{sidebar_position:1,title:"\u63a5\u53e3\u9274\u6743"},sidebar:"tutorialSidebar",previous:{title:"Tokens\u91cf\u5305\u9884\u4ed8\u8d39",permalink:"/help/docs/model-as-a-service/nova/pricing/pricing_token_quota"},next:{title:"\u9519\u8bef\u7801",permalink:"/help/docs/model-as-a-service/nova/overview/ErrorCode"}},p={},g=[{value:"\u8bf7\u6c42\u5934\uff08Request Header\uff09",id:"\u8bf7\u6c42\u5934request-header",level:3},{value:"Authorization` \u751f\u6210\u65b9\u5f0f",id:"authorization-\u751f\u6210\u65b9\u5f0f",level:3},{value:"\u751f\u6210\u793a\u4f8b",id:"\u751f\u6210\u793a\u4f8b",level:3},{value:"1 Python Sample Code",id:"1-python-sample-code",level:4},{value:"2 Java Sample Code",id:"2-java-sample-code",level:4},{value:"3 Golang Sample Code",id:"3-golang-sample-code",level:4}],s={toc:g},m="wrapper";function c(e){let{components:n,...t}=e;return(0,r.yg)(m,(0,a.A)({},s,t,{components:n,mdxType:"MDXLayout"}),(0,r.yg)("h1",{id:"\u63a5\u53e3\u9274\u6743"},"\u63a5\u53e3\u9274\u6743"),(0,r.yg)("p",null,"\u6ce8\u610f\uff1a\u5e73\u53f0\u5df2\u652f\u6301API Key\u8c03\u7528\uff0c\u8bf7\u7528\u6237\u4fdd\u7ba1\u597d\u81ea\u5df1\u7684API Key\uff0c\u5728ModelStudio \u7ba1\u7406\u4e2d\u5fc3 ",(0,r.yg)("a",{parentName:"p",href:"https://console.sensecore.cn/aistudio/management/api-key"},"API Key\u7ba1\u7406"),"\u8fdb\u884c\u5bc6\u94a5\u7684\u521b\u5efa\u64cd\u4f5c"),(0,r.yg)("h3",{id:"\u8bf7\u6c42\u5934request-header"},(0,r.yg)("strong",{parentName:"h3"},"\u8bf7\u6c42\u5934\uff08Request Header\uff09")),(0,r.yg)("p",null,"\u5728\u8bf7\u6c42\u5934\u91cc\uff0c\u6dfb\u52a0 ",(0,r.yg)("inlineCode",{parentName:"p"},"Authorization")," \u5b57\u6bb5\uff0c\u5982\u4e0b\u6240\u793a\uff1a"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-bash"},"Authorization: Bearer $API_TOKEN //$API_TOKEN \u53ef\u76f4\u63a5\u7528$API_KEY\u66ff\u6362\n")),(0,r.yg)("br",null),(0,r.yg)("h3",{id:"authorization-\u751f\u6210\u65b9\u5f0f"},(0,r.yg)("strong",{parentName:"h3"},"Authorization` \u751f\u6210\u65b9\u5f0f")),(0,r.yg)("p",null,"\u9075\u5faaJWT\uff08Json Web Token, RFC 7519\uff09\u6807\u51c6\u3002"),(0,r.yg)("p",null,"JWT\u7531\u4e09\u4e2a\u90e8\u5206\u7ec4\u6210\uff1a",(0,r.yg)("inlineCode",{parentName:"p"},"Header"),"\u3001",(0,r.yg)("inlineCode",{parentName:"p"},"Payload"),"\u3001",(0,r.yg)("inlineCode",{parentName:"p"},"Signature"),"\u3002"),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"JWT ",(0,r.yg)("inlineCode",{parentName:"li"},"Header")," \u7684\u6784\u5efa\u65b9\u5f0f")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-json"},'{"typ":"JWT","alg":"HS256"} # \u624b\u52a8\u751f\u6210JWT\uff0cJWT Header\u4e2dalg\u586b\u5199HS256\n')),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"JWT ",(0,r.yg)("inlineCode",{parentName:"li"},"Payload")," \u7684\u6784\u5efa\u65b9\u5f0f")),(0,r.yg)("table",null,(0,r.yg)("thead",{parentName:"table"},(0,r.yg)("tr",{parentName:"thead"},(0,r.yg)("th",{parentName:"tr",align:null},"\u540d\u79f0"),(0,r.yg)("th",{parentName:"tr",align:null},"\u7c7b\u578b"),(0,r.yg)("th",{parentName:"tr",align:null},"\u5fc5\u987b"),(0,r.yg)("th",{parentName:"tr",align:null},"\u63cf\u8ff0"))),(0,r.yg)("tbody",{parentName:"table"},(0,r.yg)("tr",{parentName:"tbody"},(0,r.yg)("td",{parentName:"tr",align:null},"iss"),(0,r.yg)("td",{parentName:"tr",align:null},"String"),(0,r.yg)("td",{parentName:"tr",align:null},"\u662f"),(0,r.yg)("td",{parentName:"tr",align:null},"AK\uff08Access Key ID\uff0c\u83b7\u53d6\u65b9\u5f0f\u8bf7\u53c2\u8003\u4f7f\u7528\u624b\u518c-",(0,r.yg)("a",{parentName:"td",href:"/help/docs/model-as-a-service/nova/"},"\u201c\u83b7\u53d6\u8bbf\u95ee\u5bc6\u94a5\u201d"),"\uff09")),(0,r.yg)("tr",{parentName:"tbody"},(0,r.yg)("td",{parentName:"tr",align:null},"exp"),(0,r.yg)("td",{parentName:"tr",align:null},"Integer"),(0,r.yg)("td",{parentName:"tr",align:null},"\u662f"),(0,r.yg)("td",{parentName:"tr",align:null},"\u8d85\u65f6\u65f6\u95f4\uff08Unix\u65f6\u95f4\u6233\uff0c\u5355\u4f4d\u79d2\uff09")),(0,r.yg)("tr",{parentName:"tbody"},(0,r.yg)("td",{parentName:"tr",align:null},"nbf"),(0,r.yg)("td",{parentName:"tr",align:null},"Integer"),(0,r.yg)("td",{parentName:"tr",align:null},"\u5426"),(0,r.yg)("td",{parentName:"tr",align:null},"\u751f\u6548\u65f6\u95f4\uff08Unix\u65f6\u95f4\u6233\uff0c\u5355\u4f4d\u79d2\uff09\uff0c\u5728\u6b64\u65f6\u95f4\u524d\u65e0\u6cd5\u4f7f\u7528")))),(0,r.yg)("ul",null,(0,r.yg)("li",{parentName:"ul"},"JWT ",(0,r.yg)("inlineCode",{parentName:"li"},"Signature")," \u7684\u6784\u5efa\u65b9\u5f0f")),(0,r.yg)("p",null,"SK\uff08Access Key Secret\uff0c\u83b7\u53d6\u65b9\u5f0f\u8bf7\u53c2\u8003\u4f7f\u7528\u624b\u518c-",(0,r.yg)("a",{parentName:"p",href:"/help/docs/model-as-a-service/nova/"},"\u201c\u83b7\u53d6\u8bbf\u95ee\u5bc6\u94a5\u201d"),"\uff09"),(0,r.yg)("br",null),(0,r.yg)("h3",{id:"\u751f\u6210\u793a\u4f8b"},(0,r.yg)("strong",{parentName:"h3"},"\u751f\u6210\u793a\u4f8b")),(0,r.yg)("h4",{id:"1-python-sample-code"},(0,r.yg)("strong",{parentName:"h4"},"1 Python Sample Code")),(0,r.yg)("p",null,"\u9996\u5148\uff0c\u60a8\u53ef\u4ee5\u901a\u8fc7 ",(0,r.yg)("inlineCode",{parentName:"p"},"pip")," \u5b89\u88c5\u7684\u65b9\u5f0f\u5c06 ",(0,r.yg)("inlineCode",{parentName:"p"},"PyJWT")," \u5b89\u88c5\u5230\u60a8\u7684\u73af\u5883\u4e2d\uff0c\u5728\u547d\u4ee4\u884c\u4e2d\u6267\u884c\u5982\u4e0b\u547d\u4ee4\uff1a"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-python"},"pip3 install PyJWT==2.6.0\n")),(0,r.yg)("p",null,"\u7136\u540e\uff0c\u53ef\u6309\u7167\u4ee5\u4e0b\u6837\u4f8b\u751f\u6210 ",(0,r.yg)("inlineCode",{parentName:"p"},"Authorization"),"\uff1a"),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-python"},'import time\nimport jwt\n\nak = "" # \u586b\u5199\u60a8\u7684ak\nsk = "" # \u586b\u5199\u60a8\u7684sk\n\ndef encode_jwt_token(ak, sk):\n headers = {\n "alg": "HS256",\n "typ": "JWT"\n }\n payload = {\n "iss": ak,\n "exp": int(time.time()) + 1800, # \u586b\u5199\u60a8\u671f\u671b\u7684\u6709\u6548\u65f6\u95f4\uff0c\u6b64\u5904\u793a\u4f8b\u4ee3\u8868\u5f53\u524d\u65f6\u95f4+30\u5206\u949f\n "nbf": int(time.time()) - 5 # \u586b\u5199\u60a8\u671f\u671b\u7684\u751f\u6548\u65f6\u95f4\uff0c\u6b64\u5904\u793a\u4f8b\u4ee3\u8868\u5f53\u524d\u65f6\u95f4-5\u79d2\n }\n token = jwt.encode(payload, sk, headers=headers)\n return token\n\nauthorization = encode_jwt_token(ak, sk)\nprint(authorization) # \u6253\u5370\u751f\u6210\u7684API_TOKEN\n')),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"2-java-sample-code"},(0,r.yg)("strong",{parentName:"h4"},"2 Java Sample Code")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-java"},'package test;\n\nimport com.auth0.jwt.JWT;\nimport com.auth0.jwt.algorithms.Algorithm;\n\nimport java.util.Date;\nimport java.util.HashMap;\nimport java.util.Map;\n\npublic class JWTDemo {\n \n static String ak = ""; // \u586b\u5199\u60a8\u7684ak\n static String sk = ""; // \u586b\u5199\u60a8\u7684sk\n \n public static void main(String[] args) {\n String token = sign(ak, sk);\n System.out.println(token); // \u6253\u5370\u751f\u6210\u7684API_TOKEN\n }\n static String sign(String ak,String sk) {\n try {\n Date expiredAt = new Date(System.currentTimeMillis() + 1800*1000);\n Date notBefore = new Date(System.currentTimeMillis() - 5*1000);\n Algorithm algo = Algorithm.HMAC256(sk);\n Map header = new HashMap();\n header.put("alg", "HS256");\n return JWT.create()\n .withIssuer(ak)\n .withHeader(header)\n .withExpiresAt(expiredAt)\n .withNotBefore(notBefore)\n .sign(algo);\n } catch (Exception e) {\n e.printStackTrace();\n return null;\n }\n }\n}\n')),(0,r.yg)("br",null),(0,r.yg)("h4",{id:"3-golang-sample-code"},(0,r.yg)("strong",{parentName:"h4"},"3 Golang Sample Code")),(0,r.yg)("pre",null,(0,r.yg)("code",{parentName:"pre",className:"language-Golang"},'package main\n\nimport (\n "encoding/json"\n "fmt"\n "time"\n "github.com/golang-jwt/jwt/v4"\n)\n\nfunc EncodeJwtToken(ak string, sk string) (string, error) {\n payload := jwt.MapClaims{\n "iss": ak,\n "exp": time.Now().Add(1800 * time.Second).Unix(),\n "nbf": time.Now().Add(-5 * time.Second).Unix(),\n }\n token := jwt.NewWithClaims(jwt.SigningMethodHS256, payload)\n signedToken, err := token.SignedString([]byte(sk))\n if err != nil {\n fmt.Println("Error encoding JWT token:", err)\n return "", err\n }\n return signedToken, nil\n}\n\nfunc main() {\n ak := "" // \u586b\u5199\u60a8\u7684ak\n sk := "" // \u586b\u5199\u60a8\u7684sk\n token, err := EncodeJwtToken(ak, sk)\n if err != nil {\n fmt.Println("Error:", err)\n } else {\n fmt.Println("Encoded JWT token:", token) // \u6253\u5370\u751f\u6210\u7684API_TOKEN\n }\n}\n')))}c.isMDXComponent=!0}}]);