@@ -185,7 +185,43 @@ def _wrap_static_credentials_response(rpc_state, response):
185
185
class StaticCredentials (AbstractExpiringTokenCredentials ):
186
186
def __init__ (self , driver_config , user , password = "" , tracer = None ):
187
187
super (StaticCredentials , self ).__init__ (tracer )
188
- self .driver_config = driver_config
188
+
189
+ from .driver import DriverConfig
190
+
191
+ self .driver_config = DriverConfig (
192
+ endpoint = driver_config .endpoint ,
193
+
194
+ )
195
+ self .user = user
196
+ self .password = password
197
+ self .request_timeout = 10
198
+
199
+ def _make_token_request (self ):
200
+ conn = connection .Connection .ready_factory (self .driver_config .endpoint , self .driver_config )
201
+ assert conn is not None , "Failed to establish connection in to %s" % self .driver_config .endpoint
202
+ try :
203
+ result = conn (
204
+ ydb_auth_pb2 .LoginRequest (user = self .user , password = self .password ),
205
+ ydb_auth_v1_pb2_grpc .AuthServiceStub ,
206
+ "Login" ,
207
+ _wrap_static_credentials_response ,
208
+ settings_impl .BaseRequestSettings ().with_timeout (self .request_timeout ).with_need_rpc_auth (False ),
209
+ )
210
+ finally :
211
+ conn .close ()
212
+ return {"expires_in" : 30 * 60 , "access_token" : result .token }
213
+
214
+
215
+ class UserPasswordCredentials (AbstractExpiringTokenCredentials ):
216
+ def __init__ (self , user , password , endpoint , database , root_certificates = None , tracer = None ):
217
+ super (UserPasswordCredentials ).__init__ (tracer )
218
+
219
+ from .driver import DriverConfig # to prevent circular dependencies
220
+ self .driver_config = DriverConfig (
221
+ endpoint = endpoint ,
222
+ database = database ,
223
+ root_certificates = root_certificates ,
224
+ )
189
225
self .user = user
190
226
self .password = password
191
227
self .request_timeout = 10
0 commit comments