Page 1 of 1

Domainberechtigung wird bei API nicht geprüft

Posted: Sat 2. Oct 2021, 13:12
by v3ng
Hallo,

Beim anlegen einer Domain mittels der API ist mir aufgefallen, dass hier keinerlei Prüfung der Berechtigung stattfindet.
Der Nutzer könnte demnach eine Subdomain einer Domain anlegen, die einem anderen Nutzer gehört.

Wäre es möglich, auch hier den Check auszuführen?
Gerne auch mittels zusätzlicher flag oder setting.


Danke!

Re: Domainberechtigung wird bei API nicht geprüft

Posted: Wed 6. Oct 2021, 09:17
by Alexander
Hallo,

Ich glaube hier liegt ein Verständnisproblem vor.

Man kann sowohl über die UI als auch über die API eine Subdomain (im Sinne der Domainhierarchie) auch anderen Benutzern zuweisen.
Hierbei klickt man beim Domain-Anlegeprozess als Admin nicht auf Domaintyp "Subdomain" sondern auf "Haupdomain".

Genau das passiert auch, wenn man über die API zum Beispiel folgenden Request absetzt. Beispiel:

benutzer_a:
- hat ID #23
- besitzt "test.de" (mit der ID #1)

benutzer_b:
- hat ID #24

Code: Select all

{
    "id_user": 24,
    "domain": "sub.test.de"
}
Jetzt besitzt benutzer_b eine Subdomain - im Sinne der Domainhierarchie - von benutzer_a.
Technisch kann er aber völlig frei darüber verfügen (wie bei einer Hauptdomain), hat eigene DNS Einstellungen etc.

Sieht dann so aus:
Bildschirmfoto_2021-10-06_09-07-08.png
Bildschirmfoto_2021-10-06_09-07-08.png (14.04 KiB) Viewed 2260 times
---

Wenn du jetzt eine tatsächliche Subdomain anlegen möchtest (sowohl hierarchisch, als auch technisch) die wirklich nur dem Besitzer der Hauptdomain gehört, dann musst in deinem Request noch "id_parent_domain" mit aufnehmen. Wenn "id_user" dann nicht zu "id_parent_domain" (also dem "id_user" der zur "id_parent_domain" gehörenden Domain) passen sollte, wird eine Fehlermeldung ausgegeben.

Code: Select all

{
    "id_user": 24,
    "domain": "sub-2.test.de"
    "id_parent_domain": 1
}

Code: Select all

{
    "code": "400 Bad Request",
    "message": "Invalid parent domain ID."
}
Wohingegen der folgende Request funktioniert.

Code: Select all

{
    "id_user": 23,
    "domain": "sub-2.test.de"
    "id_parent_domain": 1
}
=> Funktioniert

Re: Domainberechtigung wird bei API nicht geprüft

Posted: Wed 6. Oct 2021, 21:02
by v3ng
Hallo Alexander,

Danke dir für deine Ausführliche Antwort.

Ich stehe jedoch leider immer noch etwas auf dem Schlauch.
Folgendes ist mein Plan:

Ich integriere aktuell Keyhelp über die API in mein eigenes Dashboard.
Zwecks der Übersichtlichkeit und Verständnis für die Nutzer möchte ich die jeweiligen Optionen möglichst einfach halten.

Der Nutzer hat nun ein Inputfeld über dieses er eigenständig Domains hinzufügen kann.
Darüber soll er alle Domains hinzufügen können, bis auf Domains, die bereits einen anderen Besitzer haben.

Sprich, Besitzt Nutzer B die domain "mydomain.io", soll Nutzer A über das Inputfeld keinerlei Domains anlegen können, die auf "mydomain.io" endet.


Kann ich das so realisieren?

Re: Domainberechtigung wird bei API nicht geprüft

Posted: Thu 7. Oct 2021, 09:25
by Alexander
Das kannst du sehr wohl realisieren. Allerdings nicht mit nur einem Request, sondern du brauchst vorher noch einen weiteren Request.

Hol dir am Besten vorher die Liste aller Domains mit "[GET] /domains", oder, wenn dein Benutzer nur Subdomains anlegen können darf, holst du dir alle Domains eines Benutzers "[GET] /clients/<BENUTZER-ID>/resources".

Anschließend schaust du in die Liste, wenn die Domain noch frei wäre, bzw. die übergeordnete Ebene der Domain keinem anderen User gehört, lässt du ihn die Domain anlegen.

Wenn es eine Subdomain sein soll, ermittelst du aus der Liste noch die dazugehörige Hauptdomain-ID und übergibst sie mit id_parent_domain.

---

Noch ein Hinweis. Hier einmal ein Beispiel wie die Domain IDs und id_parent_domain funktionieren. Egal wie viele Ebenen eine Subdomain tief ist, sie hat immer nur die oberste Domain als id_parent_domain. Sprich sub.domain.von.www.test.de hat also nicht die id_parent_domain von www.test.de, sondern die von test.de.

Code: Select all

ID	Name				ID_PARENT_DOMAIN
23	test.de	                	0
24	www.test.de           		23
25	sub.domain.von.www.test.de	23

Re: Domainberechtigung wird bei API nicht geprüft

Posted: Thu 7. Oct 2021, 09:59
by v3ng
Danke dir!

Dann werde ich vorher prüfen, ob die Domain bereits auf dem System vorhanden ist.
Spricht etwas dagegen, wenn ich alle Domains des Users als Hauptdomain anlege?

Re: Domainberechtigung wird bei API nicht geprüft

Posted: Thu 7. Oct 2021, 10:02
by Alexander
Funktionieren tun beide genauso. Es macht es wahrscheinlich im KeyHelp dann schnell recht unübersichtlich, aber technisch spricht nichts dagegen.

Re: Domainberechtigung wird bei API nicht geprüft

Posted: Mon 11. Oct 2021, 17:01
by v3ng
Ich stehe bei dem Quota vor einem etwas ähnlichen Problem, da es ja aus der Admin Perspektive erfolgt, wird das User Quota beispielsweise bei den Domains oder Datenbanken nicht berücksichtigt.

Wäre es möglich eine Option zu implementieren, bei der das User Quota berücksichtigt wird?
Beispielsweise check_quota => 0/1

Es wäre natürlich möglich, im Voraus durch eine weitere Request das Quota zu prüfen, das ist Performancetechnisch allerdings etwas unschön und erzeugt unnötige Requests.


Danke!

Re: Domainberechtigung wird bei API nicht geprüft

Posted: Mon 11. Oct 2021, 17:10
by Alexander
Du meinst mit Quota die Ressourcen-Limitierungen, z.B. "ein Nutzer darf maximal 5 Datenbanken haben"?

Falls ja, da gibt es bereits eine Option - Schau mal in die API-Optionen ;)

"Ressourcenbegrenzungen von Benutzerkonten ignorieren" -> Haken raus -> Fertig

Re: Domainberechtigung wird bei API nicht geprüft

Posted: Mon 11. Oct 2021, 17:12
by OlliTheDarkness
Unbenannt.png
:P

Re: Domainberechtigung wird bei API nicht geprüft

Posted: Mon 11. Oct 2021, 17:22
by v3ng
Alexander wrote: Mon 11. Oct 2021, 17:10 Du meinst mit Quota die Ressourcen-Limitierungen, z.B. "ein Nutzer darf maximal 5 Datenbanken haben"?

Falls ja, da gibt es bereits eine Option - Schau mal in die API-Optionen ;)

"Ressourcenbegrenzungen von Benutzerkonten ignorieren" -> Haken raus -> Fertig
Huch, das habe ich ja garnicht gesehen :)

Bei Datenbanken funktioniert die Option super, Domains kann der Nutzer aber auch nach erreichen seines Kontingents anlegen.

Edit: Insofern ich mich nicht irre, wird keine Message zurückgegeben, weshalb die Datenbank nicht angelegt werden kann, wäre es möglich hier auszugeben, dass der Nutzer kein Quota mehr hat?

Re: Domainberechtigung wird bei API nicht geprüft

Posted: Tue 12. Oct 2021, 14:26
by Alexander
Domains laufen leider etwas anders bzw. bedürfen einer gesonderten Betrachtung.
Ohne es jetzt näher ausführen zu wollen, wird eine Änderung bei diesem Punkt leider dazu führen, das 90% der anderen Nutzer wahrscheinlich Probleme beim Anlegen über die API aufgrund dessen bekommen würden.

Ich lege dir daher eher den zusätzlichen Request nahe. Du kannst das Ergebnis natürlich auch cachen.

Re: Domainberechtigung wird bei API nicht geprüft

Posted: Tue 12. Oct 2021, 14:40
by v3ng
Betrifft das nur die Domains?

Dann werde ich das über den vorherigen request lösen, danke

Re: Domainberechtigung wird bei API nicht geprüft

Posted: Tue 12. Oct 2021, 14:48
by Alexander
Ja, Domains wäre der einzige Fall.