Asp.net web api Web API将openid范围添加到swagger/swashbuckle UI的身份验证url

Asp.net web api Web API将openid范围添加到swagger/swashbuckle UI的身份验证url,asp.net-web-api,oauth-2.0,swagger,openid-connect,swashbuckle,Asp.net Web Api,Oauth 2.0,Swagger,Openid Connect,Swashbuckle,我们有一个asp.net web api应用程序,它使用swagger/Swashback作为api文档。该api由azure AD使用oauth/openid connect进行保护。swagger的配置在代码中完成: var oauthParams=新字典 { {资源,https://blahblahblah/someId } }; 全局配置 .EnableSwagger=> { c、 SingleApersionVersion,名称; c、 在化学试剂中使用类型名称; c、 OAuth2o

我们有一个asp.net web api应用程序,它使用swagger/Swashback作为api文档。该api由azure AD使用oauth/openid connect进行保护。swagger的配置在代码中完成:

var oauthParams=新字典 { {资源,https://blahblahblah/someId } }; 全局配置 .EnableSwagger=> { c、 SingleApersionVersion,名称; c、 在化学试剂中使用类型名称; c、 OAuth2oauth2 .DescriptionAuth2隐式授权 .流隐式 .授权URL https://login.microsoftonline.com/te/ourtenant/ourcustompolicy/oauth2/authorize .TokenUrl https://login.microsoftonline.com/te/ourtenant/ourcustompolicy/oauth2/token; c、 操作过滤器; } .EnableSwaggerUic=> { c、 EnableOAuth2Support_应用程序ID,null,http://localhost:49919/swagger/ui/o2c-html、Swagger、oauthParams; c、 BooleanValuesnew[]{0,1}; c、 禁用验证器; c、 DocExpansionDocExpansion.List; }; 当Swashback构造用于登录的身份验证url时,它会自动添加: &范围=

但是,我需要: &scope=openid

我尝试添加以下内容:

var oauthParams=新字典 { {资源,https://blahblahblah/someId }, {scope,openid} }; 但这又增加了:

&scope=&someotherparam=someothervalue&scope=openid 你有什么想法吗

&scope=openid 到Swashback构造的身份验证url


非常感谢

因此,如果您发现问题所在,可以在此处找到违规代码:

这些js文件来自引用旧版本UI的git子模块

我可以在第154-158行看到我们有以下代码:

url += '&redirect_uri=' + encodeURIComponent(redirectUrl);
url += '&realm=' + encodeURIComponent(realm);
url += '&client_id=' + encodeURIComponent(clientId);
url += '&scope=' + encodeURIComponent(scopes.join(scopeSeparator));
url += '&state=' + encodeURIComponent(state);
它基本上是添加作用域,而不管是否存在作用域。这意味着您不能在发送到EnableOAuth2Support的additionalQueryParams字典中添加作用域,因为您将获得一个包含2个作用域查询参数的url,即

&scope=&otherparam=otherparamvalue&scope=openid
围绕作用域进行一次简单的长度检查就可以解决这个问题

最后,我从web api项目中删除了Swashback,并添加了另一个名为swagger net的nuget软件包,如下所示:

这是积极维护,它解决了问题,并使用了新版本的招摇过市用户界面。配置保持不变,您只需更改回复url,该url现在为:

http://your-url/swagger/ui/oauth2-redirect-html