Compare commits
2 commits
4498be544b
...
2ca56b6df7
Author | SHA1 | Date | |
---|---|---|---|
tuxcoder | 2ca56b6df7 | ||
tuxcoder | 8f17883b52 |
|
@ -22,7 +22,6 @@ HYDRA_PUBLIC_URL = 'http://127.0.0.1:4444'
|
|||
SUBJECT_PREFIX = 'something random'
|
||||
|
||||
OAUTH_ID = 'identiy_provider'
|
||||
OAUTH_SECRET = 'ThisIsNotSafe'
|
||||
|
||||
|
||||
[LENTICULAR_CLOUD_SERVICES.jabber]
|
||||
|
|
|
@ -1,9 +1,13 @@
|
|||
from secrets import token_hex
|
||||
from flask import Flask
|
||||
from ory_hydra_client import Client
|
||||
from typing import Optional
|
||||
from ory_hydra_client.api.o_auth_2 import list_o_auth_2_clients, create_o_auth_2_client
|
||||
from ory_hydra_client.api.o_auth_2 import list_o_auth_2_clients, create_o_auth_2_client, set_o_auth_2_client
|
||||
from ory_hydra_client.models.o_auth_20_client import OAuth20Client
|
||||
|
||||
import logging
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
class HydraService:
|
||||
|
||||
|
@ -19,7 +23,7 @@ class HydraService:
|
|||
self.set_hydra_client(Client(base_url=app.config['HYDRA_ADMIN_URL']))
|
||||
|
||||
client_name = app.config['OAUTH_ID']
|
||||
client_secret = app.config['OAUTH_SECRET']
|
||||
client_secret = token_hex(16)
|
||||
|
||||
clients = list_o_auth_2_clients.sync_detailed(_client=self.hydra_client).parsed
|
||||
if clients is None:
|
||||
|
@ -45,6 +49,11 @@ class HydraService:
|
|||
ret = create_o_auth_2_client.sync(json_body=client, _client=self.hydra_client)
|
||||
if ret is None:
|
||||
raise RuntimeError("could not crate account")
|
||||
else:
|
||||
client.client_secret = client_secret
|
||||
ret = set_o_auth_2_client.sync(id=client.client_id,json_body=client, _client=self.hydra_client)
|
||||
if ret is None:
|
||||
raise RuntimeError("could not crate account")
|
||||
if type(client.client_id) is not str:
|
||||
raise RuntimeError("could not parse client_id from ory-hydra")
|
||||
self.client_id = client.client_id
|
||||
|
|
|
@ -92,7 +92,7 @@ def init_login_manager(app: Flask) -> None:
|
|||
oauth2.register(
|
||||
name="custom",
|
||||
client_id=hydra_service.client_id,
|
||||
client_secret=app.config['OAUTH_SECRET'],
|
||||
client_secret=hydra_service.client_secret,
|
||||
server_metadata_url=f'{base_url}/.well-known/openid-configuration',
|
||||
access_token_url=f"{base_url}/oauth2/token",
|
||||
authorize_url=f"{base_url}/oauth2/auth",
|
||||
|
|
|
@ -10,6 +10,10 @@ in
|
|||
services.lenticular-cloud = {
|
||||
enable = mkEnableOption "lenticluar service enable";
|
||||
domain = mkOption {
|
||||
type = lib.types.str;
|
||||
example = "example.com";
|
||||
};
|
||||
service_domain = mkOption {
|
||||
type = lib.types.str;
|
||||
example = "account.example.com";
|
||||
};
|
||||
|
@ -68,10 +72,10 @@ in
|
|||
};
|
||||
|
||||
services.nginx.enable = true;
|
||||
services.nginx.virtualHosts."${cfg.domain}" = {
|
||||
services.nginx.virtualHosts."${cfg.service_domain}" = {
|
||||
addSSL = true;
|
||||
enableACME = true;
|
||||
serverName = cfg.domain;
|
||||
serverName = cfg.service_domain;
|
||||
locations."/" = {
|
||||
recommendedProxySettings = true;
|
||||
proxyPass = "http://unix:/run/${username}/web.sock";
|
||||
|
|
Loading…
Reference in a new issue