gpt4 book ai didi

java - 在 Vaadin 23 + Spring Security + Azure AD 中访问 Microsoft Graph API

转载 作者:行者123 更新时间:2023-12-03 03:39:02 50 4
gpt4 key购买 nike

我正在开发一个企业 Vaadin 应用程序,我想知道是否有人知道如何获取 JWT token 以(从后端)向 GraphAPI 发出请求以获取其他用户详细信息。

我的安全配置如下所示。我通过此配置实现的是 SSO 体验。只要进入该站点,用户就会被重定向到 MS 身份验证门户,并在经过身份验证后重定向回来。

@Configuration
public class SecurityConfiguration extends VaadinWebSecurityConfigurerAdapter {

private final OAuth2UserService<OidcUserRequest, OidcUser> oidcUserService;

public SecurityConfiguration(OAuth2UserService<OidcUserRequest, OidcUser> oidcUserService) {
this.oidcUserService = oidcUserService;
}

@Override
protected void configure(HttpSecurity http) throws Exception {
super.configure(http);
http.oauth2Login().userInfoEndpoint().oidcUserService(oidcUserService);
}
}

在 application.properties 上我有以下设置:

azure.activedirectory.tenant-id=my_tenant_id
azure.activedirectory.client-id=my_client_id
azure.activedirectory.client-secret=my_secret_key
azure.activedirectory.redirect-uri-template=http://localhost:8080/login/oauth2/code/

以及 pom.xml

<dependencyManagement>
...
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>azure-spring-boot-bom</artifactId>
<version>${azure.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
...
</dependencyManagement>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-oauth2-client</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>azure-spring-boot-starter-active-directory</artifactId>
</dependency>
<dependency>
<groupId>com.azure.spring</groupId>
<artifactId>azure-spring-boot-starter-active-directory</artifactId>
</dependency>
...

从休息端点来看,它是 well documented我应该如何检索 token 并调用电话。

@GetMapping("/graph")
@ResponseBody
public String graph(
@RegisteredOAuth2AuthorizedClient("graph") OAuth2AuthorizedClient graphClient
) {
// toJsonString() is just a demo.
// oAuth2AuthorizedClient contains access_token. We can use this access_token to access the resource server.
return toJsonString(graphClient);
}

此外,在该应用程序的 AAD 上,我设置了允许访问图形 API 的 API 角色 User.ReadCalendars.ReadWrite

问题:

  • 我在 application.properties 中缺少一些用于配置权限的内容。
  • 我不知道需要什么 bean @Autowire 才能从 Vaadin 范围内的用户特定上下文访问 token 。

备注:

  • 我使用的是“正常”身份验证,并且该应用程序适用于拥有 O365 帐户的同一家公司。它不是 Multi-Tenancy 或 B2C。

最佳答案

如果登录完全由MS 身份验证门户处理,那么需要对登录进行更多说明吗?

我认为您可以在 WebSecurityConfiguration 类上添加更多过滤,以允许使用其他 IP 登录

    @Override
protected void configure(HttpSecurity http) throws Exception {
http
.addFilter(accessTokenProcessingFilter())
.authenticationProvider(preAuthenticatedAuthenticationProvider())
.exceptionHandling().and()
.headers().and()
.sessionManagement().sessionCreationPolicy(STATELESS).and()
.securityContext().and()
.anonymous().and()
.authorizeRequests().antMatchers(HttpMethod.OPTIONS, "/**").permitAll()

...

关于java - 在 Vaadin 23 + Spring Security + Azure AD 中访问 Microsoft Graph API,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72067094/

50 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com