Skip to content
Snippets Groups Projects
Unverified Commit c7313908 authored by Ian Chen's avatar Ian Chen Committed by GitHub
Browse files

Merge pull request #104 from andy89923/fix/oauth2

fix: missing token in header
parents 7458449a 03db83c1
No related branches found
No related tags found
No related merge requests found
......@@ -131,13 +131,20 @@ func GetChargingRecord(c *gin.Context) {
return
}
res, err := http.NewRequestWithContext(ctx, http.MethodGet, requestUri, nil)
req, err := http.NewRequestWithContext(ctx, http.MethodGet, requestUri, nil)
if err != nil {
logger.ProcLog.Error(err)
c.JSON(http.StatusInternalServerError, gin.H{})
return
}
resp, res_err := httpsClient.Do(res)
if err = webui_context.GetSelf().RequestBindToken(req, ctx); err != nil {
logger.ProcLog.Error(err)
c.JSON(http.StatusInternalServerError, gin.H{})
return
}
resp, res_err := httpsClient.Do(req)
if res_err != nil {
logger.ProcLog.Error(err)
c.JSON(http.StatusInternalServerError, gin.H{})
......
......@@ -47,6 +47,12 @@ func GetSmfUserPlaneInfo() (interface{}, error) {
logger.ProcLog.Error(err_req)
return jsonData, err_req
}
if err = webui_context.GetSelf().RequestBindToken(req, ctx); err != nil {
logger.ProcLog.Error(err)
return jsonData, err
}
resp, err_rsp := httpsClient.Do(req)
if err_rsp != nil {
logger.ProcLog.Error(err_rsp)
......
......@@ -1800,6 +1800,13 @@ func GetRegisteredUEContext(c *gin.Context) {
c.JSON(http.StatusInternalServerError, gin.H{})
return
}
if err = webui_context.GetSelf().RequestBindToken(req, ctx); err != nil {
logger.ProcLog.Error(err)
c.JSON(http.StatusInternalServerError, gin.H{})
return
}
resp, err := httpsClient.Do(req)
if err != nil {
logger.ProcLog.Error(err)
......
......@@ -3,9 +3,12 @@ package webui_context
import (
"context"
"fmt"
"net/http"
"github.com/google/uuid"
"golang.org/x/oauth2"
"github.com/free5gc/openapi"
"github.com/free5gc/openapi/Nnrf_NFDiscovery"
"github.com/free5gc/openapi/Nnrf_NFManagement"
"github.com/free5gc/openapi/models"
......@@ -164,3 +167,19 @@ func (c *WEBUIContext) GetTokenCtx(serviceName models.ServiceName, targetNF mode
return oauth.GetTokenCtx(models.NfType_AF, targetNF,
c.NfInstanceID, c.NrfUri, string(serviceName))
}
// NewRequestWithContext() will not apply header in ctx
// so httpsClient.Do(req) will not have token in header if OAuth2 enable
func (c *WEBUIContext) RequestBindToken(req *http.Request, ctx context.Context) error {
if tok, ok := ctx.Value(openapi.ContextOAuth2).(oauth2.TokenSource); ok {
// We were able to grab an oauth2 token from the context
var latestToken *oauth2.Token
var err error
if latestToken, err = tok.Token(); err != nil {
logger.ConsumerLog.Error(err)
return err
}
latestToken.SetAuthHeader(req)
}
return nil
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment