如何让swagger.io和swashbuckle通过Bearer令牌传回api_key?

时间:2015-10-07 23:35:33

标签: asp.net-web-api2 jwt swagger-ui swashbuckle

我一直在关注许多来源,尝试在我的WebApi2项目中实施JWT身份验证,并且还开始使用swagger.ioSwashbuckle来记录和测试我的API。我已经受到exceptionless支持<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <nav> <div class="moduletable_menu_navigationbar"> <ul class="menu"> <li id="current" class="active item8"><a href="http://localhost/html/"><span>Banca Personas</span></a></li> <li class="item9"><a href="/html/banca-pyme.html"><span>Banca Pyme</span></a></li> <li class="item10"><a href="/html/banca-empresas.html"><span>Banca Empresas</span></a></li> <li class="item602"><a href="/html/bankard.html"><span>Bankard</span></a></li> </ul> </div> <div class="moduletable_gfbb_navigationbar"> <ul class="menu"> <li class="item12"><a href="/informacion-institucional.html"><span>Informacion Institucional</span></a></li> </ul> </div> </nav>方法生成/auth/login的方式的启发,然后用于调用其他需要授权的方法。

我还应该说我的开发基于ASP.NET Web API 2一书,该书使用api_key包引入了基于令牌的安全性,因此我按照以下方式为我实现了JWT委托处理程序:

JwtAuthForWebAPI

(我已经设置了web.config凭据,代码已经很好了)

问题是:

  1. 与无例外不同的是,当我在输入// Add Jwt Authentication Web Handler var builder = new SecurityTokenBuilder(); var reader = new ConfigurationReader(); GlobalConfiguration.Configuration.MessageHandlers.Add( new JwtAuthenticationMessageHandler { AllowedAudience = reader.AllowedAudience, Issuer = reader.Issuer, SigningToken = builder.CreateFromKey(reader.SymmetricKey), //SigningToken = builder.CreateFromKey(reader.SubjectCertificateName), CookieNameToCheckForToken = reader.CookieNameToCheckForToken }); 后调用方法时,swagger将密钥放在查询字符串上,而不是放在&#34; Bearer&#34;授权标题
  2. 我不知道上面的代码是否检查了JWT的查询字符串(即使它确实如此,但由于很多原因(安全性,长URL),它听起来并不合理
  3. 因为上面的代码为我构建了委托处理程序,我无法调试它以查看它实际在做什么(我可以将log4net链接到它吗?)
  4. 因此,我的控制器方法没有被点击,因为api_key失败。
  5. 我想我现在的问题是解决上面的第1项,这将使2成为非问题,并且(希望)使4工作!感谢。

0 个答案:

没有答案