带有 Dropwizard 的 Azure Adal

Azure Adal with Dropwizard

我试图找到 Azure Adal (Oauth2) 与 Dropwizard 一起使用的示例,但似乎找不到任何东西。

dropwizard 网站上的 Oauth2 示例非常含糊,我似乎无法理解在哪里提供我的 ClientId 和令牌端点。

谁有关于如何将 Oauth2 (Azure AD) 与 Dropwizard 结合使用的示例

我完全没有使用 Dropwizard 的经验,但我确实设法在 GitHub 上找到了一些示例代码,这可能会对您有所帮助。

我想指出我在自述文件部分注意到的一个小免责声明。

This project is only in use for internal projects at CommerceHub. You should be familiar with the auth section of the DropWizard manual.

也就是说,作为一个示例,它对我来说看起来相当可行,希望这对您有所帮助。这是他们发布的示例配置以供参考。

    ad:
    domain: my.company.example.com  # No Default
    domainController: my-fav-dc.my.company.example.com # Default: <domain>
    sslEnabled: true  # Default: true
    usernameFilterTemplate: (&((&(objectCategory=Person)(objectClass=User)))(sAMAccountName=%s)) # Default: <As shown> %s replaced with the sAMAccountName
    attributeNames: # Default: <As Shown>. first two are required. Will be fetched as String.
        - sAMAccountName
        - memberOf
        - mail
    binaryAttributeNames: # Default: empty. Will be fetched as byte[]. Need for the ones below.
        - objectGUID
        - objectSid
    connectionTimeout: 1000 # Default: as shown in millseconds
    readTimeout: 1000 # Default: as shown in millseconds
    requiredGroups: # Default: <empty>
        - All
        - Of
        - These
        - Are
        - Required
        - Or
        - You
        - Get
        - A
        - 401

我也在此处包含了页面中的示例:

@Override
public void run(HelloWorldConfiguration configuration, Environment environment) throws ClassNotFoundException {
...
// dropwizard 0.9.x
environment.jersey().register(new AuthDynamicFeature(
        new BasicCredentialAuthFilter.Builder<AdPrincipal>()
            .setAuthenticator(AdAuthenticator.createDefault(configuration.getAdConfiguration()))
            .setRealm("MSAD")
            .buildAuthFilter()));
environment.jersey().register(RolesAllowedDynamicFeature.class);
environment.jersey().register(new AuthValueFactoryProvider.Binder<>(AdPrincipal.class));

// dropwizard 0.7.x
environment.jersey().register(new BasicAuthProvider<>(AdAuthenticator.createDefault(configuration.getAdConfiguration()), "MSAD"));
...
environment.jersey().register(new ProtectedResource());
}

我没有使用 Dropwizard 的经验,但我认为您可能希望将 Azure AD 与您的应用程序集成,以调用某些 Azure 服务或实现 SSO 等身份验证。

我用 Dropwizard 搜索了 OAuth2 的用户手册。它似乎通过将相关的 REST 服务注册到应用程序容器中作为 Spring Framework 可能的过滤器来进行身份验证和授权。

Azure 官方网站上有一个示例展示了如何 integrate Azure AD into a Java web application。我认为了解这些步骤对您有帮助。

如有任何疑问,请随时告诉我。