【发布时间】:2019-09-14 02:51:53
【问题描述】:
您好,我在 .net 核心中开发了 Web 应用程序。我在 azure ad 中注册了两个应用程序。一个用于我的 web api,一个用于我的招摇。根据http://www.sharepointconfig.com/2018/08/configure-swagger-to-authenticate-against-azure-ad/,我们需要在swagger中添加api访问来与web api进行通信。但是,每当我尝试在 azure 门户中添加权限时,我都看不到我的 web api 应用程序。我不确定我看不到我的网络应用程序来授予 api 访问权限。接下来每当我在招摇中单击授权时,我都会收到错误消息客户端已请求访问未在客户端应用程序注册中请求的权限中列出的资源。以下是错误屏幕截图。
下面是代码。
services.AddSwaggerGen(c =>
{
c.SwaggerDoc("v1", new Info { Title = "My API", Version = "v1" });
c.AddSecurityDefinition("oauth2", new OAuth2Scheme
{
Type = "oauth2",
Flow = "implicit",
AuthorizationUrl = "https://login.microsoftonline.com/8b95-448d-b259-98a44d112f7c/oauth2/authorize",
Scopes = new Dictionary<string, string>
{
{ "openid", "Sign In Permissions" },
{ "profile", "User Profile Permissions" } },
TokenUrl = "https://login.microsoftonline.com/98a44d112f7c/oauth2/token"
});
});
在配置中,
app.UseSwaggerUI(c =>
{
c.OAuthClientId(Configuration["Swagger:ClientId"]);
c.OAuthClientSecret(Configuration["Swagger:ClientSecret"]);
c.OAuthRealm(Configuration["AzureAD:ClientId"]);
c.OAuthAppName("My API V1");
c.OAuthScopeSeparator(" ");
c.OAuthAdditionalQueryStringParams(new { resource = Configuration["AzureAD:ClientId"] });
c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
});
请问我该如何解决上述问题?有人可以帮我找到这个问题吗?任何帮助,将不胜感激。谢谢
【问题讨论】:
-
看起来您正在使用 v1 端点而不是指定资源。您可以 a) 指定资源参数(API 的客户端 id/app id URI)或 b) 使用 v2 端点和指定 API 范围的范围。不要使用 openid 和 profile,它们是 id 令牌,你需要一个访问令牌。
-
您好 Junnas,感谢您的回答。我已经添加了我的招摇代码。你能帮我添加确切的代码吗?
标签: azure authentication azure-active-directory swagger