wp-m365-login/docs/wordpress-org-einreichung.md
friloo 8766927123
Add certificate authentication, in-app setup guides and security audit
Certificate (RFC 7523 client assertion) as an alternative to the client
secret: one-click generation of a 3072-bit RSA key pair with a
self-signed certificate, .cer download (public part only), own PEM
upload with validation, expiry display, encrypted key storage. Both the
authorization code exchange and the Graph client-credentials request
use the selected method. Step-by-step guides for secret, certificate
and the app registration are shown in the settings.

Security audit (docs/security-audit.md) and fixes:
- Multi-tenant mode ignored the unverified email claim: matching now
  uses the UPN only, or the email claim when xms_edov is true.
- Login starts are rate limited per client (30 per 10 minutes).
- Optional trusted proxy header for client IPs
  (M365_LOGIN_CLIENT_IP_HEADER / filter).

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JJxAHYdMfKPoN4koRc4Ci2
2026-09-22 15:04:32 +00:00

3.9 KiB
Raw Permalink Blame History

Checkliste: Einreichung im WordPress-Plugin-Verzeichnis

Das Plugin ist so aufgebaut, dass es die Richtlinien des Plugin-Verzeichnisses erfüllt. Vor der Einreichung unter https://wordpress.org/plugins/developers/add/ bitte die folgenden Punkte durchgehen.

1. Vor dem Upload prüfen

  • Tested up to: in readme.txt auf die aktuelle WordPress-Version setzen (das Review-Team lehnt veraltete Werte ab).
  • Stable tag: in readme.txt und Version: in m365-login.php sowie M365_LOGIN_VERSION sind identisch.
  • Contributors: in readme.txt enthält deinen WordPress.org-Benutzernamen (aktuell friloo).
  • Übersetzungsdateien aktualisiert: wp i18n make-pot . languages/m365-login.pot (WP-CLI) oder python3 bin/make-pot.py, danach python3 bin/compile-mo.py.
  • bash bin/build-zip.sh ausführen und build/m365-login.zip hochladen (Ordner im ZIP heißt m365-login, nicht wp-m365-login).
  • Lokal den Plugin Check laufen lassen (Plugin „Plugin Check (PCP)“ installieren oder auf das CI-Ergebnis achten) er muss ohne Fehler durchlaufen.

2. Namens- und Marken-Regeln

  • Slugs dürfen nicht mit wp- oder mit Markennamen wie microsoft- beginnen; deshalb heißt der Slug m365-login und der Plugin-Name „M365 Login“. Sollte das Review-Team dennoch einen anderen Slug zuweisen (z. B. wegen Trademark-Bedenken bei „M365“), müssen Text Domain, Ordnername und readme.txt angepasst werden Suche nach m365-login im Repo.
  • Der Name darf nicht suggerieren, dass das Plugin von Microsoft stammt. Beschreibungstexte verwenden deshalb Formulierungen wie „sign in with Microsoft“, nicht „official Microsoft plugin“.
  • Das Microsoft-Logo ist eingebettet, damit der Button so aussieht, wie Nutzer es erwarten. Microsoft erlaubt die Verwendung des Logos für „Sign in with Microsoft“-Buttons gemäß den Branding-Richtlinien. Ein Reviewer könnte trotzdem nachfragen der Hinweis auf diese Richtlinie reicht in der Regel.

3. Was bereits erfüllt ist

Anforderung Umsetzung
GPL-kompatible Lizenz LICENSE (GPL-2.0), Header in m365-login.php, readme.txt
readme.txt im WP-Format inkl. Pflichtabschnitt External services (Microsoft-Login- und Graph-Endpunkte, übertragene Daten, Links zu Nutzungsbedingungen/Datenschutz)
Keine externen Assets/CDNs CSS/JS liegen im Plugin; einzige Netzwerkverbindungen gehen zu login.microsoftonline.com und (optional, Gruppenprüfung) graph.microsoft.com
Sanitizing / Escaping / Nonces Settings API mit sanitize_callback, esc_* bei jeder Ausgabe, check_ajax_referer + current_user_can
Eindeutiges Präfix m365_login_ / M365_Login_ für alle globalen Bezeichner
Kein Tracking, keine Telefon-nach-Hause-Funktion
Saubere Deinstallation uninstall.php entfernt Option, Transients und User-Meta (auch Multisite)
Keine minifizierten Dateien ohne Quelle Alle Assets liegen unminifiziert vor
Requires PHP / Requires at least 7.4 / 6.0
Übersetzbar Text Domain m365-login, languages/m365-login.pot, deutsche Übersetzung
Security-Review docs/security-audit.md (Bedrohungsmodell, Befunde, Fixes)

4. Nach der Freigabe

  1. SVN-Zugang aus der Freigabe-Mail nutzen: svn co https://plugins.svn.wordpress.org/m365-login.
  2. Inhalt von build/m365-login/ nach trunk/ kopieren, assets/ aus .wordpress-org/ befüllen (Icon, Banner, Screenshots).
  3. svn cp trunk tags/1.0.0 und committen.
  4. Screenshots erstellen (siehe == Screenshots == in readme.txt) und als screenshot-1.png … in assets/ ablegen.
  5. Optional: GitHub Action 10up/action-wordpress-plugin-deploy einrichten, um Releases automatisch nach SVN zu spiegeln.