【问题标题】:Configure a cloudservice for autentication with Azure Active Directory配置云服务以使用 Azure Active Directory 进行身份验证
【发布时间】:2017-02-03 16:55:31
【问题描述】:

我有一个单租户云服务,我希望只有我公司的员工可以访问它。该解决方案具有 Web 角色和工作者角色。

Web.Config

<add key="ida:Tenant" value="MyCompany.onmicrosoft.com" />
<add key="ida:Audience" value="https://MyCompany.onmicrosoft.com/MySolutionWebRole" />
<add key="ida:ClientID" value="44421xxx-xxxx-xxxx-xxxx-xxxxxxx7024" />
<add key="ida:Password" value="i6fMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4Yk=" />
<add key="ida:AADInstance" value="https://login.microsoftonline.com/{0}" />
<add key="ida:PostLogoutRedirectUri" value="https://localhost:44322/" />

另外,我在 Cloud.config 中获得了相同的设置:

<Setting name="ida.Tenant" value="MyCompany.onmicrosoft.com" />
<Setting name="ida.Audience" value="https://MyCompany.onmicrosoft.com/MySolutionWebRole" />
<Setting name="ida.ClientID" vvalue="44421xxx-xxxx-xxxx-xxxx-xxxxxxx7024" />
<Setting name="ida.Password" value="i6fMxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx4Yk=" />
<Setting name="ida.AADInstance" value="https://login.microsoftonline.com/{0}" />
<Setting name="ida.PostLogoutRedirectUri" value="https://localhost:44322/" />

继续使用 Startup.Auth.cs

   public void ConfigureAuth(IAppBuilder app)
    {
        string authority = String.Format(CultureInfo.InvariantCulture, aadInstance, tenant);
        app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
        app.UseCookieAuthentication(new CookieAuthenticationOptions());    
        app.UseOpenIdConnectAuthentication(
                new OpenIdConnectAuthenticationOptions
                {
                    ClientId = clientId,
                    Authority = authority,
                    PostLogoutRedirectUri = postLogoutRedirectUri,
                    RedirectUri = postLogoutRedirectUri,

                    Notifications = new OpenIdConnectAuthenticationNotifications
                    {
                        AuthenticationFailed = context =>
                        {
                            context.HandleResponse();
                            context.Response.Redirect("/Error?message=" + context.Exception.Message);
                            return Task.FromResult(0);
                        }
                    }

                });
        }

最后,我在控制器中设置了 [Authorize] 标签。

在 Azure Active Directory 设置中,我已经注册了我的云服务。 应用程序类型为 Web 应用程序/API,多租户为“否”。注销 url 设置为https://localhost:44322/Account/EndSession。我没有更改或编辑清单。

当我尝试进入云服务时,我被重定向到我的组织登录页面(到目前为止一切正常),但在输入密码后,我收到一条错误消息。

您无法登录。我们收到了非法请求。 (免费翻译)

相关 ID:21f4089f-1952-4f57-aead-173a66c1408d 时间戳: 2016-09-26 10:24:14Z AADSTS90093:此应用程序需要 另一个应用程序的应用程序权限。同意 应用程序权限只能由管理员执行。 注销并以管理员身份登录或联系您的 组织的管理员。

登录请求的url如下(我输入密码的界面);

https://login.microsoftonline.com/fd2xxxxxx-xxxx-xxxx-xxxxxxxf3f2/ oauth2/authorize?client_id=444xxxxxx-xxxx-xxxx-xxxxxxxx024 &redirect_uri=https%3a%2f%2flocalhost%3a44322%2f &response_mode=form_post &response_type=code+id_token &scope=openid+profile&state=OpenIdConnect.AuthenticationProperties %3dYkxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

我一直在研究基于 Web 应用程序的两个示例解决方案,网址为 https://github.com/Azure-Samples/active-directory-dotnet-webapp-openidconnecthttps://github.com/Azure-Samples/active-directory-dotnet-webapp-multitenant-openidconnect

如果能在这件事上提供任何帮助,我将不胜感激

【问题讨论】:

    标签: azure authentication azure-active-directory azure-cloud-services


    【解决方案1】:

    原来我必须在 Azure Active Directory 应用注册中编辑我的清单:

    "requiredResourceAccess": [
        {
          "resourceAppId": "00000002-0000-0000-c000-000000000000",
          "resourceAccess": [
            {
              "id": "311a71xxxx-xxxx-xxxx-xxxx7156d8e6",
              "type": "Scope"
            },
            {
              "id": "5778995axxxx-xxxx-xxx-xxxx63a9f3f4d04",
              "type": "Role"
            }
    

    当我删除最后一个条目(角色,可能是辅助角色)时,我看到一个屏幕提示我是否要授予应用程序对我的 Azure AD 配置文件的读取权限。回答 OK 后,我被转发到 localhost:44322 和 404。解决方案是从配置文件中删除 postLogoutRedirectUri 键,以及删除 Startup.Auth.cs 中的两行

    //PostLogoutRedirectUri = postLogoutRedirectUri,
    //RedirectUri = postLogoutRedirectUri,
    

    现在它按预期工作了:)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多