@@ -26,17 +26,6 @@ TStringBuf THandlerSessionServiceCheckNebius::GetCookie(const NHttp::TCookies& c
26
26
return cookieValue;
27
27
}
28
28
29
- TString THandlerSessionServiceCheckNebius::DecodeToken (const TStringBuf& cookie, const NActors::TActorContext& ctx) {
30
- TString token;
31
- try {
32
- Base64StrictDecode (cookie, token);
33
- } catch (std::exception& e) {
34
- LOG_DEBUG_S (ctx, EService::MVP, " Base64Decode " << cookie << " cookie: " << e.what ());
35
- token.clear ();
36
- }
37
- return token;
38
- }
39
-
40
29
void THandlerSessionServiceCheckNebius::StartOidcProcess (const NActors::TActorContext& ctx) {
41
30
NHttp::THeaders headers (Request->Headers );
42
31
LOG_DEBUG_S (ctx, EService::MVP, " Start OIDC process" );
@@ -99,9 +88,8 @@ void THandlerSessionServiceCheckNebius:: HandleExchange(NHttp::TEvHttpProxy::TEv
99
88
}
100
89
}
101
90
102
- void THandlerSessionServiceCheckNebius::ExchangeSessionToken (const TString sessionToken, const NActors::TActorContext& ctx) {
103
- LOG_DEBUG_S (ctx, EService::MVP, " Exchange session token" );
104
- tokenExchangeType = ETokenExchangeType::SessionToken;
91
+ void THandlerSessionServiceCheckNebius::SendTokenExchangeRequest (const TStringBuilder& body, const ETokenExchangeType exchangeType, const NActors::TActorContext& ctx) {
92
+ tokenExchangeType = exchangeType;
105
93
NHttp::THttpOutgoingRequestPtr httpRequest = NHttp::THttpOutgoingRequest::CreateRequestPost (Settings.GetExchangeEndpointURL ());
106
94
httpRequest->Set <&NHttp::THttpRequest::ContentType>(" application/x-www-form-urlencoded" );
107
95
@@ -111,42 +99,34 @@ void THandlerSessionServiceCheckNebius::ExchangeSessionToken(const TString sessi
111
99
token = tokenator->GetToken (Settings.SessionServiceTokenName );
112
100
}
113
101
httpRequest->Set (" Authorization" , token); // Bearer included
102
+ httpRequest->Set <&NHttp::THttpRequest::Body>(body);
103
+
104
+ ctx.Send (HttpProxyId, new NHttp::TEvHttpProxy::TEvHttpOutgoingRequest (httpRequest));
105
+ Become (&THandlerSessionServiceCheckNebius::StateExchange);
106
+ }
107
+
108
+ void THandlerSessionServiceCheckNebius::ExchangeSessionToken (const TString sessionToken, const NActors::TActorContext& ctx) {
109
+ LOG_DEBUG_S (ctx, EService::MVP, " Exchange session token" );
114
110
TStringBuilder body;
115
111
body << " grant_type=urn:ietf:params:oauth:grant-type:token-exchange"
116
112
<< " &requested_token_type=urn:ietf:params:oauth:token-type:access_token"
117
113
<< " &subject_token_type=urn:ietf:params:oauth:token-type:session_token"
118
114
<< " &subject_token=" << sessionToken;
119
- httpRequest->Set <&NHttp::THttpRequest::Body>(body);
120
-
121
- ctx.Send (HttpProxyId, new NHttp::TEvHttpProxy::TEvHttpOutgoingRequest (httpRequest));
122
115
123
- Become (&THandlerSessionServiceCheckNebius::StateExchange );
116
+ SendTokenExchangeRequest (body, ETokenExchangeType::SessionToken, ctx );
124
117
}
125
118
126
119
void THandlerSessionServiceCheckNebius::ExchangeImpersonatedToken (const TString sessionToken, const TString impersonatedToken, const NActors::TActorContext& ctx) {
127
120
LOG_DEBUG_S (ctx, EService::MVP, " Exchange impersonated token" );
128
- tokenExchangeType = ETokenExchangeType::ImpersonatedToken;
129
- NHttp::THttpOutgoingRequestPtr httpRequest = NHttp::THttpOutgoingRequest::CreateRequestPost (Settings.GetExchangeEndpointURL ());
130
- httpRequest->Set <&NHttp::THttpRequest::ContentType>(" application/x-www-form-urlencoded" );
131
-
132
- TMvpTokenator* tokenator = MVPAppData ()->Tokenator ;
133
- TString token = " " ;
134
- if (tokenator) {
135
- token = tokenator->GetToken (Settings.SessionServiceTokenName );
136
- }
137
- httpRequest->Set (" Authorization" , token); // Bearer included
138
121
TStringBuilder body;
139
122
body << " grant_type=urn:ietf:params:oauth:grant-type:token-exchange"
140
123
<< " &requested_token_type=urn:ietf:params:oauth:token-type:access_token"
141
124
<< " &subject_token_type=urn:ietf:params:oauth:token-type:jwt"
142
125
<< " &subject_token=" << impersonatedToken
143
126
<< " &actor_token=" << sessionToken
144
127
<< " &actor_token_type=urn:ietf:params:oauth:token-type:session_token" ;
145
- httpRequest->Set <&NHttp::THttpRequest::Body>(body);
146
128
147
- ctx.Send (HttpProxyId, new NHttp::TEvHttpProxy::TEvHttpOutgoingRequest (httpRequest));
148
-
149
- Become (&THandlerSessionServiceCheckNebius::StateExchange);
129
+ SendTokenExchangeRequest (body, ETokenExchangeType::ImpersonatedToken, ctx);
150
130
}
151
131
152
132
void THandlerSessionServiceCheckNebius::ClearImpersonatedCookie (const NActors::TActorContext& ctx) {
0 commit comments