Hi, am new to go language and need help or ideas as how i can write a 
server oauth2 to have a client authenticated..
If there is an already code or if i have to write my own then please help 
with the guidlines of how write it
The client have to send a POST request and get authenticated and then the 
server respond with the 200 success.

The format of the API oauth2 in json is attached bellow.



{
"openapi": "3.0.0",
"info": {
"version": "1.PreR15.1.0",
"title": "NRF OAuth2",
"description": "MYSERVER OAuth2 Authorization"
},
"paths": {
"/oauth2/token": {
"post": {
"summary": "Access Token Request",
"operationId": "AccessTokenRequest",
"tags": [
"Access Token Request"
],
"security": [
{
"basic": []
}
],
"requestBody": {
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/AccessTokenReq"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Successful Access Token Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccessTokenRsp"
}
}
},
"headers": {
"Cache-Control": {
"$ref": "#/components/headers/cache-control"
},
"Pragma": {
"$ref": "#/components/headers/pragma"
}
}
},
"400": {
"description": "Error in the Access Token Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AccessTokenErr"
}
}
},
"headers": {
"Cache-Control": {
"$ref": "#/components/headers/cache-control"
},
"Pragma": {
"$ref": "#/components/headers/pragma"
}
}
}
}
}
}
},
"components": {
"securitySchemes": {
"basic": {
"type": "http",
"scheme": "basic"
}
},
"headers": {
"cache-control": {
"required": true,
"schema": {
"type": "string",
"enum": [
"no-store"
]
}
},
"pragma": {
"required": true,
"schema": {
"type": "string",
"enum": [
"no-cache"
]
}
}
},
"schemas": {
"AccessTokenReq": {
"format": "x-www-form-urlencoded",
"required": [
"grant_type",
"nfInstanceId",
"nfType",
"targetNfType",
"scope"
],
"properties": {
"grant_type": {
"type": "string",
"enum": [
"client_credentials"
]
},
"nfInstanceId": {
"$ref": "TS29571_CommonData.yaml#/components/schemas/NfInstanceId"
},
"nfType": {
"$ref": "TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType"
},
"targetNfType": {
"$ref": "TS29510_Nnrf_NFManagement.yaml#/components/schemas/NFType"
},
"scope": null,
"type": "string\npattern: '^([a-zA-Z0-9_]*[*]{0,1})$'"
}
},
"AccessTokenRsp": {
"type": "object",
"required": [
"access_token",
"token_type"
],
"properties": {
"access_token": {
"type": "string",
"description": "JWS Compact Serialized representation of JWS signed JSON 
object (AccessTokenClaims)"
},
"token_type": {
"type": "string"
},
"expires_in": {
"type": "integer"
},
"scope": {
"type": "string",
"pattern": "^([a-zA-Z0-9_]*[*]{0,1})$"
}
}
},
"AccessTokenClaims": {
"type": "object",
"required": [
"issuer",
"subject",
"audience",
"scope",
"expiration"
],
"properties": {
"issuer": {
"$ref": "TS29571_CommonData.yaml#/components/schemas/NfInstanceId"
},
"subject": {
"type": "string"
},
"audience": {
"type": "array",
"items": {
"$ref": "TS29571_CommonData.yaml#/components/schemas/NfInstanceId"
}
},
"scope": {
"type": "string",
"pattern": "^([a-zA-Z0-9_]*[*]{0,1})$"
},
"expiration": {
"type": "integer"
}
}
},
"AccessTokenErr": {
"type": "object",
"required": [
"error"
],
"properties": {
"error": {
"type": "string",
"enum": [
"invalid_request",
"invalid_client",
"invalid_grant",
"unauthorized_client",
"unsupported_grant_type",
"invalid_sope"
]
},
"error_description": {
"type": "string"
},
"error_uri": {
"type": "string"
}
}
}
}
},
"externalDocs": {
"description": "Documentation",
"url": "http://www.3gpp.org/ftp/Specs/archive/29_series/29.510/";
}
}


BR
Abraham

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to