Ein Beispiel für diese Technik sehen Sie in meinen VSTS-Erweiterungsaufgaben
{
"id": "Marktplatz-Service-Endpunkt",
"Beschreibung": "Visual Studio Marketplace",
"Typ": "ms.vss-endpoint.service-endpoint-type",
"Ziele": [
"ms.vss-endpoint.endpoint-types"
],
"Eigenschaften": {
"Name": "Marktplatz-Auth-Schlüssel",
"displayName": "Visual Studio Marketplace",
"url": "https://app.market.visualstudio.com/_apis/gallery",
"authenticationSchemes": [
{
"type": "ms.vss-endpoint.endpoint-auth-scheme-token"
},
{
"typ": "ms.vss-endpoint.endpoint-auth-scheme-basic"
}
]
}
}
Was aber, wenn Sie über die Grundlagen hinausgehen wollen? Es gibt Möglichkeiten, die Benutzeroberfläche mit zusätzlichen Textfeldern zu erweitern, wie in einigen der anderen Erweiterungen, die Sie auf GitHub finden.
{
"id": "saucelabs-endpoint-type",
"Beschreibung": "Sauce Labs Credentials",
"Typ": "ms.vss-endpoint.service-endpoint-type",
"Ziele": [ "ms.vss-endpoint.endpoint-types" ],
"Eigenschaften": {
"Name": "saucelabs",
"displayName": "Sauce Labs Anmeldeinformationen",
"url": "https://saucelabs.com/rest/v1/",
"inputDescriptors": [],
"authenticationSchemes": [
{
"Typ": "ms.vss-endpoint.endpoint-auth-scheme-basic",
"inputDescriptors": [
{
"id": "Benutzername",
"Name": "Benutzername",
"Beschreibung": "Benutzername",
"inputMode": "textbox",
"isVertraulich": false,
"validation": { "isRequired": false, "dataType": "string" }
},
{
"id": "Passwort",
"name": "API Token",
"Beschreibung": "API Token auf Ihrer Saucelabs-Kontoseite gefunden",
"inputMode": "textbox",
"isVertraulich": true,
"validation": { "isRequired": true, "dataType": "string" }
}
]
}
]
}
}
}
HINWEIS: Microsoft hat mich gebeten, Ihnen zu erklären, dass der unten stehende Code zwar Ihr benutzerdefiniertes Authentifizierungsschema erstellt, das Produkt aber immer noch davon ausgeht, dass die Standardliste der Authentifizierungsschemata festgelegt ist. Sie werden auf unvorhergesehene Probleme stoßen, bis sich diese Liste irgendwann vollständig öffnet.
Ich überlasse Ihnen das unten stehende Stück als Referenz, da es eine gute Möglichkeit ist, zu verstehen, wie die Erweiterbarkeit funktioniert und wie Elemente definiert werden, aber bitte verwenden Sie es im Moment nicht, um benutzerdefinierte Autorisierungsschemata zu erstellen. Auch wenn Ihre Erweiterung wahrscheinlich alle Validierungen bestehen wird, kann sie für Ihre Kunden alle möglichen Probleme verursachen.
Erweitern Sie stattdessen das Basic- oder Token-Authentifizierungsschema um zusätzliche Parameter und ändern Sie den Namen/die Beschreibung, damit die Benutzeroberfläche Ihren Bedürfnissen entspricht.

{
"Beiträge": [
{
"id": "endpoint-auth-scheme-service-principal",
"Beschreibung": "Dienst Prinzipal-basiertes Endpunkt-Authentifizierungsschema",
"type": "ms.vss-endpoint.service-endpoint-auth-scheme",
"Ziele": [
"ms.vss-endpoint.endpoint-auth-schemes"
],
"Eigenschaften": {
"Name": "ServicePrincipal",
"displayName": "Dienstprinzipal-Authentifizierung",
"inputDescriptors": [
{
"id": "servicePrincipalId",
"name": "Service Principal Id",
"Beschreibung": "Client Id für die Verbindung zum Endpunkt.nVerweisen Sie auf den Link zur Erstellung eines Azure Service Principal.",
"inputMode": "textbox",
"isVertraulich": false,
"Validierung": {
"isRequired": true,
"dataType": "string"
}
},
{
"id": "servicePrincipalKey",
"name": "Hauptschlüssel des Dienstes",
"Beschreibung": "Service Principle Key für die Verbindung zum Endpunkt.nVerweisen Sie auf den Link zur Erstellung von Azure Service Principal.",
"inputMode": "passwordbox",
"isVertraulich": true,
"Validierung": {
"isRequired": true,
"dataType": "string"
}
},
{
"id": "tenantId",
"name": "Mieter Id",
"Beschreibung": "Tenant Id für die Verbindung zum Endpunkt.nVerweisen Sie auf den Link zur Erstellung eines Azure Service Principal.",
"inputMode": "textbox",
"isVertraulich": false,
"Validierung": {
"isRequired": true,
"dataType": "guid"
}
}
]
}
}
]
}
{
"manifestVersion": 1,
"id": "jessehouwing-vsts-custom-authscheme",
"name": "Benutzerdefiniertes Authscheme",
"Version": "0.0.0",
"Herausgeber": "jessehouwing",
"Ziele": [
{
"id": "Microsoft.VisualStudio.Services"
}
],
"Umfang": [
],
"Beschreibung": "Erstellt ein benutzerdefiniertes Authentifizierungsschema und eine passende Endpunktdefinition",
"Kategorien": [
"Integrieren"
],
"Tags": [
"Probe"
],
"screenshots": [
],
"Inhalt": {
},
"Links": {
},
"Branding": {
"Farbe": "rgb(36, 43, 50)",
"Thema": "dunkel"
},
"Icons": {
},
"Dateien": [
],
"Beiträge": [
{
"id": "endpoint-auth-scheme-custom",
"Beschreibung": "Jesses eigenes Schema.",
"type": "ms.vss-endpoint.service-endpoint-auth-scheme",
"Ziele": [
"ms.vss-endpoint.endpoint-auth-schemes"
],
"Eigenschaften": {
"name": "CustomAuthScheme",
"displayName": "Jesses benutzerdefiniertes Authentifizierungsschema",
"inputDescriptors": [
{
"id": "E-Mail",
"Name": "E-Mail",
"Beschreibung": "E-Mail.",
"inputMode": "textbox",
"isVertraulich": false,
"Validierung": {
"isRequired": true,
"dataType": "string"
}
},
{
"id": "Passphrase",
"Name": "Passphrase",
"Beschreibung": "Passphrase.",
"inputMode": "passwordbox",
"isVertraulich": true,
"Validierung": {
"isRequired": true,
"dataType": "string"
}
}
]
}
},
{
"id": "Marktplatz-Service-Endpunkt",
"Beschreibung": "Visual Studio Marketplace",
"Typ": "ms.vss-endpoint.service-endpoint-type",
"Ziele": [
"ms.vss-endpoint.endpoint-types"
],
"Eigenschaften": {
"Name": "my-custom-scheme",
"displayName": "Benutzerdefiniertes Schema",
"url": "https://app.market.visualstudio.com/_apis/gallery",
"authenticationSchemes": [
{
"Typ": "endpoint-auth-scheme-custom"
}
]
}
}
]
}
Verfasst von
Jesse Houwing
Jesse is a passionate trainer and coach, helping teams improve their productivity and quality all while trying to keep work fun. He is a Professional Scrum Trainer (PST) through Scrum.org, Microsoft Certified Trainer and GitHub Accredited Trainer. Jesse regularly blogs and you'll find him on StackOverflow, he has received the Microsoft Community Contributor Award three years in a row and has been awarded the Microsoft Most Valuable Professional award since 2015. He loves espresso and dark chocolate, travels a lot and takes photos everywhere he goes.
Contact