From f447dd11952b3e6d38ae84861ce58605957c4314 Mon Sep 17 00:00:00 2001 From: Roland Osborne Date: Mon, 14 Feb 2022 23:20:42 -0800 Subject: [PATCH] adding auth claim to test setup --- net/server/internal/api_authorize.go | 37 +++++++++++++++++++--------- net/server/internal/testUtil.go | 17 +++++++++++++ 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/net/server/internal/api_authorize.go b/net/server/internal/api_authorize.go index 1de09b92..6639785e 100644 --- a/net/server/internal/api_authorize.go +++ b/net/server/internal/api_authorize.go @@ -1,20 +1,33 @@ -/* - * DataBag - * - * DataBag provides storage for decentralized identity based self-hosting apps. It is intended to support sharing of personal data and hosting group conversations. - * - * API version: 0.0.1 - * Contact: roland.osborne@gmail.com - * Generated by: Swagger Codegen (https://github.com/swagger-api/swagger-codegen.git) - */ package databag import ( - "net/http" + "net/http" ) func Authorize(w http.ResponseWriter, r *http.Request) { - w.Header().Set("Content-Type", "application/json; charset=UTF-8") - w.WriteHeader(http.StatusOK) + + account, code, res := BearerAppToken(r, true); + if res != nil { + ErrResponse(w, code, res) + return + } + detail := account.AccountDetail + + var token string + if err := ParseRequest(r, w, &token); err != nil { + ErrResponse(w, http.StatusBadRequest, err) + return + } + + claim := &Claim{ Token: token } + + msg, err := WriteDataMessage(detail.PrivateKey, detail.PublicKey, detail.KeyType, + APP_SIGNPKCS1V15, account.Guid, APP_MSGAUTHENTICATE, &claim) + if err != nil { + ErrResponse(w, http.StatusInternalServerError, err) + return + } + + WriteResponse(w, msg) } diff --git a/net/server/internal/testUtil.go b/net/server/internal/testUtil.go index e5d63fb5..55acf9e7 100644 --- a/net/server/internal/testUtil.go +++ b/net/server/internal/testUtil.go @@ -519,6 +519,8 @@ func AddTestAccount(username string) (guid string, token string, err error) { Description: "A test app", Url: "http://app.example.com", }; + var claim Claim + var msg DataMessage var profile Profile var login = username + ":pass" @@ -564,6 +566,21 @@ func AddTestAccount(username string) (guid string, token string, err error) { return } token = guid + "." + access + + // authorize claim + if r, w, err = NewRequest("PUT", "/authorize", "1234abcd"); err != nil { + return + } + SetBearerAuth(r, token) + Authorize(w, r) + if err = ReadResponse(w, &msg); err != nil { + return + } + signer, messageType, _, res := ReadDataMessage(&msg, &claim) + if res != nil || signer != guid || messageType != APP_MSGAUTHENTICATE || claim.Token != "1234abcd" { + err = errors.New("invalid authenticated claim") + return + } return }