Ajout d'une autorisation de base pour Swagger-UI
J'ai actuellement déployé un swagger projet, mais j'ai du mal à l'ajout de quelques autorisation de base. Currenty lorsque vous cliquez sur "Essayer!" bouton, vous êtes invité à vous connecter à un compte pour accéder aux résultats. J'ai un compte que je veux automatiquement être utilisé chaque fois que quelqu'un tente d'accéder à l'api. Soufflet est mon index.html pour le projet:
<!DOCTYPE html>
<html>
<head>
<title>Swagger UI</title>
<link href='css/screen.css' media='screen' rel='stylesheet' type='text/css'/>
<link href='css/screen.css' media='print' rel='stylesheet' type='text/css'/>
<script src='lib/jquery-1.8.3.js' type='text/javascript'></script>
<script src='lib/jquery.slideto.min.js' type='text/javascript'></script>
<script src='lib/jquery.wiggle.min.js' type='text/javascript'></script>
<script src='lib/jquery.ba-bbq.min.js' type='text/javascript'></script>
<script src='lib/handlebars-1.0.rc.1.js' type='text/javascript'></script>
<script src='lib/underscore-min.js' type='text/javascript'></script>
<script src='lib/backbone-min.js' type='text/javascript'></script>
<script src='lib/swagger.js' type='text/javascript'></script>
<script src='lib/swagger-ui.js' type='text/javascript'></script>
<script src='lib/highlight.7.3.pack.js' type='text/javascript'></script>
<script type="text/javascript">
$(function () {
window.swaggerUi = new SwaggerUi({
discoveryUrl:"https://localhost:8080/AssistAPI/api-docs.json",
apiKey:"",
dom_id:"swagger-ui-container",
supportHeaderParams: true,
supportedSubmitMethods: ['get', 'post', 'put'],
onComplete: function(swaggerApi, swaggerUi){
if(console) {
console.log("Loaded SwaggerUI")
console.log(swaggerApi);
console.log(swaggerUi);
}
$('pre code').each(function(i, e) {hljs.highlightBlock(e)});
},
onFailure: function(data) {
if(console) {
console.log("Unable to Load SwaggerUI");
console.log(data);
}
},
docExpansion: "none"
});
window.authorizations.add("key", new ApiKeyAuthorization("Authorization", "XXXX"header"));
//window.authorizations.add("key", new ApiKeyAuthorization("username", "rmanda", "header"));
window.swaggerUi.load();
});
</script>
</head>
<body class="swagger-section">
<div id='header'>
<div class="swagger-ui-wrap">
<a id="logo" href="http://swagger.io">swagger</a>
<form id='api_selector'>
<div class='input'><input placeholder="http://example.com/api" id="input_baseUrl" name="baseUrl" type="text"/></div>
<div class='input'><input placeholder="api_key" id="input_apiKey" name="apiKey" type="text"/></div>
<div class='input'><a id="explore" href="#">Explore</a></div>
</form>
</div>
</div>
<div id="message-bar" class="swagger-ui-wrap"> </div>
<div id="swagger-ui-container" class="swagger-ui-wrap"></div>
</body>
</html>
Je suis en train d'essayer de déterminer où l'information est censée aller à permettre Autorisation de Base. Je sais que les lignes de code suivantes, mais quelqu'un peut-il m'expliquer un peu plus en détail où les choses aller exactement. Je suis venu à la réalisation que la documentation de swagger sur GitHub n'est pas très clair ou utile
window.authorizations.add("key", new ApiKeyAuthorization("Authorization", "XXXX"header"));
window.authorizations.add("key", new ApiKeyAuthorization("username", "password", "header"));
source d'informationauteur Zack Herbert
Vous devez vous connecter pour publier un commentaire.
Le réglage correct pour l'authentification de Base de l'en-Tête est:
La Chaîne nom d'utilisateur:mot de passe doit être codé à l'aide de RFC2045-MIME une variante de Base64.
Voir plus de détails ici: https://en.wikipedia.org/wiki/Basic_access_authentication#Client_side
Ensuite, pour configurer cet en-tête, il faut faire:
Considérant que le codage Base64 pour nom d'utilisateur:mot de passe est
dXNlcm5hbWU6cGFzc3dvcmQ=
Lire plus à ce sujet ici:
https://github.com/swagger-api/swagger-ui
Swagger de l'INTERFACE utilisateur 3.x
À Swagger de l'INTERFACE utilisateur 3.13.0+, vous pouvez utiliser le
preauthorizeBasic
méthode de pré-remplir le Basic auth nom d'utilisateur et mot de passe pour "essayer" d'appels.En supposant que votre définition de l'API comprend un schéma de sécurité pour l'authentification Basique:
vous pouvez spécifier la valeur par défaut nom d'utilisateur et le mot de passe pour l'authentification Basique comme suit:
"L'essayer" va utliser le nom d'utilisateur et le mot de passe, et si vous cliquez sur "Autoriser" bouton dans le Style de l'INTERFACE utilisateur, vous verrez que le nom d'utilisateur et un mot de passe masqué sont pré-remplis dans l'INTERFACE utilisateur.
Cette réponse contient également une solution pour Swagger INTERFACE utilisateur 3.1.6—3.12.1, qui n'ont pas le
preauthorizeBasic
fonctionnalité.vous pouvez ajouter/modifier cette fonction dans votre dist/index.html fichier
OU vous pouvez passer à la nouvelle version de Swagger 2.0 , c'est un problème connu est a été fixé.
Vous pouvez utiliser de la Sécurité Printemps et ajouter le motif suivant
Il va vous demander une Authentification avant de Swagger affichage.
J'ai eu un problème similaire, les réponses proposées sont correctes dans mon cas-je ajouter quelque chose dans le index.html comme:
J'ai ajouté ce soit sur le marqué méthode
addApiKeyAuthorization
ou vous pouvez créer une autre méthode, mais de l'appeler après lawindow.swaggerUi.load();
Mais si vous avez votre swagger-interface utilisateur exécute en tant que "stand alone" avec quelque chose comme gulp ou grunt vous pouvez avoir besoin de configurer les services pour accepter tous les OPTIONS demande.
Je lutte un peu avec ça, j'espère que cela aide quelqu'un.
Ce qui concerne