From ae8599e81142916c40b95b7327e219dc72e132d1 Mon Sep 17 00:00:00 2001 From: TYuan0816 Date: Tue, 8 Oct 2024 22:17:56 +0800 Subject: [PATCH] fix: get locationUrl from UDM --- internal/sbi/consumer/udm_service.go | 11 +++++++---- internal/sbi/processor/ue_authentication.go | 9 ++++----- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/internal/sbi/consumer/udm_service.go b/internal/sbi/consumer/udm_service.go index 69e2603..2f5521a 100644 --- a/internal/sbi/consumer/udm_service.go +++ b/internal/sbi/consumer/udm_service.go @@ -79,12 +79,12 @@ func (s *nudmService) GenerateAuthDataApi( udmUrl string, supiOrSuci string, authInfoReq models.AuthenticationInfoRequest, -) (*models.AuthenticationInfoResult, error, *models.ProblemDetails) { +) (*models.AuthenticationInfoResult, string, error, *models.ProblemDetails) { client := s.getUdmUeauClient(udmUrl) ctx, pd, err := ausf_context.GetSelf().GetTokenCtx(models.ServiceName_NUDM_UEAU, models.NfType_UDM) if err != nil { - return nil, err, pd + return nil, "", err, pd } authInfoResult, rsp, err := client.GenerateAuthDataApi.GenerateAuthData(ctx, supiOrSuci, authInfoReq) @@ -96,12 +96,15 @@ func (s *nudmService) GenerateAuthDataApi( problemDetails.Cause = "UPSTREAM_SERVER_ERROR" } problemDetails.Status = int32(rsp.StatusCode) - return nil, err, &problemDetails + return nil, "", err, &problemDetails } defer func() { if rspCloseErr := rsp.Body.Close(); rspCloseErr != nil { logger.UeAuthLog.Errorf("GenerateAuthDataApi response body cannot close: %+v", rspCloseErr) } }() - return &authInfoResult, nil, nil + + locationUrl := rsp.Header.Get("Location") + + return &authInfoResult, locationUrl, nil, nil } diff --git a/internal/sbi/processor/ue_authentication.go b/internal/sbi/processor/ue_authentication.go index 57dc802..d2b785b 100644 --- a/internal/sbi/processor/ue_authentication.go +++ b/internal/sbi/processor/ue_authentication.go @@ -254,7 +254,7 @@ func (p *Processor) UeAuthPostRequestProcedure(c *gin.Context, updateAuthenticat udmUrl := p.Consumer().GetUdmUrl(self.NrfUri) - result, err, pd := p.Consumer().GenerateAuthDataApi(udmUrl, supiOrSuci, authInfoReq) + result, locationUrl, err, pd := p.Consumer().GenerateAuthDataApi(udmUrl, supiOrSuci, authInfoReq) if err != nil { logger.UeAuthLog.Infof("GenerateAuthDataApi error: %+v", err) c.JSON(http.StatusInternalServerError, pd) @@ -266,14 +266,13 @@ func (p *Processor) UeAuthPostRequestProcedure(c *gin.Context, updateAuthenticat ausfUeContext := ausf_context.NewAusfUeContext(ueid) ausfUeContext.ServingNetworkName = snName ausfUeContext.AuthStatus = models.AuthResult_ONGOING - ausfUeContext.UdmUeauUrl = udmUrl + ausfUeContext.UdmUeauUrl = locationUrl ausf_context.AddAusfUeContextToPool(ausfUeContext) logger.UeAuthLog.Infof("Add SuciSupiPair (%s, %s) to map.\n", supiOrSuci, ueid) ausf_context.AddSuciSupiPairToMap(supiOrSuci, ueid) - locationURI := self.Url + factory.AusfAuthResUriPrefix + "/ue-authentications/" + supiOrSuci - putLink := locationURI + putLink := locationUrl if authInfoResult.AuthType == models.AuthType__5_G_AKA { logger.UeAuthLog.Infoln("Use 5G AKA auth method") putLink += "/5g-aka-confirmation" @@ -440,7 +439,7 @@ func (p *Processor) UeAuthPostRequestProcedure(c *gin.Context, updateAuthenticat responseBody.AuthType = authInfoResult.AuthType - c.Header("Location", locationURI) + c.Header("Location", locationUrl) c.JSON(http.StatusCreated, responseBody) }