1
1
#include < ydb/library/actors/http/http.h>
2
2
#include < ydb/library/security/util.h>
3
+ #include < ydb/mvp/core/mvp_tokens.h>
3
4
#include " openid_connect.h"
4
5
#include " oidc_session_create_nebius.h"
5
6
#include < library/cpp/string_utils/base64/base64.h>
@@ -19,14 +20,21 @@ void THandlerSessionCreateNebius::RequestSessionToken(const TString& code) {
19
20
TCgiParameters params;
20
21
params.emplace (" code" , code);
21
22
params.emplace (" client_id" , code);
23
+ params.emplace (" client_assertion_type" , " urn:ietf:params:oauth:client-assertion-type:access_token_bearer" );
22
24
params.emplace (" grant_type" , " authorization_code" );
23
25
params.emplace (" redirect_uri" , TStringBuilder () << (Request->Endpoint ->Secure ? " https://" : " http://" )
24
26
<< host
25
27
<< GetAuthCallbackUrl ());
26
28
27
29
NHttp::THttpOutgoingRequestPtr httpRequest = NHttp::THttpOutgoingRequest::CreateRequestPost (Settings.GetTokenEndpointURL ());
28
30
httpRequest->Set <&NHttp::THttpRequest::ContentType>(" application/x-www-form-urlencoded" );
29
- httpRequest->Set (" Authorization" , Settings.GetAuthorizationString ());
31
+
32
+ TMvpTokenator* tokenator = MVPAppData ()->Tokenator ;
33
+ TString token = " " ;
34
+ if (tokenator) {
35
+ token = tokenator->GetToken (Settings.SessionServiceTokenName );
36
+ }
37
+ httpRequest->Set (" Authorization" , token); // Bearer included
30
38
httpRequest->Set <&NHttp::THttpRequest::Body>(params ());
31
39
32
40
Send (HttpProxyId, new NHttp::TEvHttpProxy::TEvHttpOutgoingRequest (httpRequest));
0 commit comments