sso-nebus 0.1.1__py3-none-any.whl → 0.1.2__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- sso_nebus/user_client.py +8 -8
- {sso_nebus-0.1.1.dist-info → sso_nebus-0.1.2.dist-info}/METADATA +49 -1
- {sso_nebus-0.1.1.dist-info → sso_nebus-0.1.2.dist-info}/RECORD +5 -5
- {sso_nebus-0.1.1.dist-info → sso_nebus-0.1.2.dist-info}/WHEEL +0 -0
- {sso_nebus-0.1.1.dist-info → sso_nebus-0.1.2.dist-info}/licenses/LICENSE +0 -0
sso_nebus/user_client.py
CHANGED
|
@@ -72,7 +72,7 @@ class UserClient(BaseClient):
|
|
|
72
72
|
Returns:
|
|
73
73
|
PKCEParams с code_verifier, code_challenge и state
|
|
74
74
|
"""
|
|
75
|
-
data = await self.get("
|
|
75
|
+
data = await self.get("pkce-params")
|
|
76
76
|
self._pkce_params = PKCEParams(**data)
|
|
77
77
|
return self._pkce_params
|
|
78
78
|
|
|
@@ -118,7 +118,7 @@ class UserClient(BaseClient):
|
|
|
118
118
|
if scope:
|
|
119
119
|
params["scope"] = scope
|
|
120
120
|
|
|
121
|
-
data = await self.get("
|
|
121
|
+
data = await self.get("authorize", params=params)
|
|
122
122
|
return AuthorizeResponse(**data)
|
|
123
123
|
|
|
124
124
|
async def login(
|
|
@@ -144,7 +144,7 @@ class UserClient(BaseClient):
|
|
|
144
144
|
"password": password,
|
|
145
145
|
}
|
|
146
146
|
|
|
147
|
-
data = await self.post("
|
|
147
|
+
data = await self.post("login", json_data=json_data)
|
|
148
148
|
return LoginResponse(**data)
|
|
149
149
|
|
|
150
150
|
async def exchange_code_for_tokens(
|
|
@@ -182,7 +182,7 @@ class UserClient(BaseClient):
|
|
|
182
182
|
if redirect_uri:
|
|
183
183
|
form_data["redirect_uri"] = redirect_uri
|
|
184
184
|
|
|
185
|
-
data = await self.post("
|
|
185
|
+
data = await self.post("token", form_data=form_data)
|
|
186
186
|
token_response = TokenResponse(**data)
|
|
187
187
|
|
|
188
188
|
# Сохраняем токены
|
|
@@ -213,7 +213,7 @@ class UserClient(BaseClient):
|
|
|
213
213
|
"client_id": self.client_id,
|
|
214
214
|
}
|
|
215
215
|
|
|
216
|
-
data = await self.post("
|
|
216
|
+
data = await self.post("token", form_data=form_data)
|
|
217
217
|
token_response = TokenResponse(**data)
|
|
218
218
|
|
|
219
219
|
# Обновляем токены
|
|
@@ -238,7 +238,7 @@ class UserClient(BaseClient):
|
|
|
238
238
|
raise TokenError(
|
|
239
239
|
"Access token не найден. Выполните авторизацию сначала.")
|
|
240
240
|
|
|
241
|
-
data = await self.get("
|
|
241
|
+
data = await self.get("me", access_token=access_token)
|
|
242
242
|
return UserInfo(**data)
|
|
243
243
|
|
|
244
244
|
async def logout(self, refresh_token: Optional[str] = None) -> dict:
|
|
@@ -258,7 +258,7 @@ class UserClient(BaseClient):
|
|
|
258
258
|
|
|
259
259
|
form_data = {"refresh_token": refresh_token}
|
|
260
260
|
|
|
261
|
-
data = await self.post("
|
|
261
|
+
data = await self.post("logout", form_data=form_data)
|
|
262
262
|
|
|
263
263
|
# Очищаем токены
|
|
264
264
|
self._access_token = None
|
|
@@ -274,7 +274,7 @@ class UserClient(BaseClient):
|
|
|
274
274
|
Returns:
|
|
275
275
|
ServicesList со списком активных микросервисов
|
|
276
276
|
"""
|
|
277
|
-
data = await self.get("
|
|
277
|
+
data = await self.get("services")
|
|
278
278
|
return ServicesList(**data)
|
|
279
279
|
|
|
280
280
|
def _get_access_token(self) -> Optional[str]:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: sso-nebus
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.2
|
|
4
4
|
Summary: Python клиент для взаимодействия с MS Auth Service API
|
|
5
5
|
License: LICENSE
|
|
6
6
|
License-File: LICENSE
|
|
@@ -168,6 +168,54 @@ async def main():
|
|
|
168
168
|
asyncio.run(main())
|
|
169
169
|
```
|
|
170
170
|
|
|
171
|
+
Пример для получения информации по пользвателю для подстановки в Depends
|
|
172
|
+
```
|
|
173
|
+
from fastapi import FastAPI, Header, HTTPException
|
|
174
|
+
from typing import Optional
|
|
175
|
+
|
|
176
|
+
app = FastAPI()
|
|
177
|
+
|
|
178
|
+
sso_client = ServiceClient(
|
|
179
|
+
base_url="http://localhost:8000",
|
|
180
|
+
client_id="your_service_id",
|
|
181
|
+
client_secret="your_service_secret"
|
|
182
|
+
)
|
|
183
|
+
|
|
184
|
+
async def get_current_user(authorization: Optional[str] = Header(None)):
|
|
185
|
+
"""
|
|
186
|
+
Dependency для получения текущего пользователя из токена
|
|
187
|
+
"""
|
|
188
|
+
if not authorization:
|
|
189
|
+
raise HTTPException(status_code=401, detail="Токен не предоставлен")
|
|
190
|
+
|
|
191
|
+
# Извлекаем токен из заголовка "Bearer <token>"
|
|
192
|
+
try:
|
|
193
|
+
token = authorization.split(" ")[1]
|
|
194
|
+
except IndexError:
|
|
195
|
+
raise HTTPException(status_code=401, detail="Неверный формат токена")
|
|
196
|
+
|
|
197
|
+
try:
|
|
198
|
+
user_info = await sso_client.get_current_user(access_token=token)
|
|
199
|
+
return user_info
|
|
200
|
+
except AuthenticationError:
|
|
201
|
+
raise HTTPException(status_code=401, detail="Невалидный токен")
|
|
202
|
+
except Exception as e:
|
|
203
|
+
raise HTTPException(status_code=500, detail=f"Ошибка при проверке токена: {e}")
|
|
204
|
+
|
|
205
|
+
@app.get("/protected")
|
|
206
|
+
async def protected_endpoint(current_user = Depends(get_current_user)):
|
|
207
|
+
"""
|
|
208
|
+
Защищенный endpoint, который требует валидный токен пользователя
|
|
209
|
+
"""
|
|
210
|
+
return {
|
|
211
|
+
"message": f"Привет, {current_user.name} {current_user.surname}!",
|
|
212
|
+
"user_id": current_user.id,
|
|
213
|
+
"email": current_user.email,
|
|
214
|
+
"scopes": current_user.scopes
|
|
215
|
+
}
|
|
216
|
+
|
|
217
|
+
```
|
|
218
|
+
|
|
171
219
|
## API Reference
|
|
172
220
|
|
|
173
221
|
### UserClient
|
|
@@ -6,8 +6,8 @@ sso_nebus/exmples/example_service.py,sha256=19NNTmbaRSaWLpDQffGWNDmXkDJXdLOgD2Wk
|
|
|
6
6
|
sso_nebus/exmples/example_user.py,sha256=c_Uf36FDHIXvv_vdqsO5XvXkvu1YOUsqaTO44_8DqVM,1878
|
|
7
7
|
sso_nebus/models.py,sha256=0xIE5RvnxV2sAxO7_GTCes6HlHbdzGwHIjWVe1X7-ks,3024
|
|
8
8
|
sso_nebus/service_client.py,sha256=RUmnwVJBXfEqFfidCwHfwZo-2S_tyz_n9Ojuje7j4F4,5470
|
|
9
|
-
sso_nebus/user_client.py,sha256
|
|
10
|
-
sso_nebus-0.1.
|
|
11
|
-
sso_nebus-0.1.
|
|
12
|
-
sso_nebus-0.1.
|
|
13
|
-
sso_nebus-0.1.
|
|
9
|
+
sso_nebus/user_client.py,sha256=-3pJmvZxJgyEo3moGQvZVAOhJMOIC6NuE8NgJ33Fyfs,12976
|
|
10
|
+
sso_nebus-0.1.2.dist-info/licenses/LICENSE,sha256=dCbOm3zpH8T7vLDC2K7QJLu-LEl2zqaSuyARbqfGsEY,1863
|
|
11
|
+
sso_nebus-0.1.2.dist-info/METADATA,sha256=hed0VrJyId6el7rcpUs4ecjqyh2-c3D372CXzJvaGk0,8406
|
|
12
|
+
sso_nebus-0.1.2.dist-info/WHEEL,sha256=zp0Cn7JsFoX2ATtOhtaFYIiE2rmFAD4OcMhtUki8W3U,88
|
|
13
|
+
sso_nebus-0.1.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|