我将Windows Server 2012 ADFS v3.0用作身份提供程序。我已经将Swashbuckle用于.Net Core API 2.2集成了Swagger 结果,我还必须在OAuth2Scheme中使用authorizationCode流。
第1步)调用授权URL并接收代码-这有效
第2步)调用Token URL并将代码作为querystring参数传递并接收JWT令牌-这正在工作
我通过监视Fiddler中的请求和响应来验证了这两个步骤。
我还手动在Postman中创建了我的请求,并收到了令牌。
在Chrome检查器中,对该令牌的调用成功返回了200。
我一直在遵循相同的流程其他内部应用程序。 (虽然是第一次使用Swagger)
重定向到TokenURL似乎可以正常工作,因为我看到了swagger / oauth-redirect.html的流量,这只是一个重定向,然后页面看上去会自动关闭
但是由于某种原因,该页面给出了一般错误消息: 验证错误TypeError:无法提取
设置代码 我正在通过Startup.cs而不是通过json配置文件进行配置。
c.AddSecurityDefinition("oauth2", new OAuth2Scheme
{
Type = "oauth2",
Flow= "authorizationCode",
AuthorizationUrl = "https://adfs.youridentityprovider.com/adfs/oauth2/authorize",
TokenUrl= "https://adfs.youridentityprovider.com/adfs/oauth2/token",
});
app.UseSwaggerUI(c =>
{
c.SwaggerEndpoint("v1/swagger.json", "My API V1");
c.OAuthClientId("id linked in my Identity provider");
c.OAuthClientSecret("swagger");
c.OAuthAppName("app name linked in my Identity provider");
c.OAuthRealm("identifier linked in my Identity provider");
var qParams = new Dictionary<string, string>();
qParams.Add("resource", "resource id");
//This was needed because I kept getting an error message saying resource parameter was missing for the Authorization URL.
//I didn't like that it was adding a query string parameter to the Token URL call as well.
//But I verified that it was still working ok with this parameter
c.OAuthAdditionalQueryStringParams(qParams);
});
我还没有完成将该令牌传递给我的API方法的下一步。我认为必须先获得授权后才能执行此操作。