gpt4 book ai didi

java - 从 azure 登录获取 token

转载 作者:行者123 更新时间:2023-11-30 05:59:11 25 4
gpt4 key购买 nike

我正在使用 Azure AD 登录 Spring Boot 应用程序。虽然我可以登录,但我需要查看带有不记名 token 的用户信息。当用户从 azure 登录( https://login.microsoftonline.com/ {{adId}}/oauth2/token) 重定向回应用程序时,如何获取此 token ?

@EnableWebSecurity
@EnableGlobalMethodSecurity(prePostEnabled = true)
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
private OAuth2UserService<OidcUserRequest, OidcUser> oidcUserService;


@Override
protected void configure(HttpSecurity http) throws Exception {
http
.authorizeRequests()
.anyRequest().authenticated()
.and()
.oauth2Login()
.userInfoEndpoint()
.oidcUserService(oidcUserService);
}


}

最佳答案

正如 Amogh 所说,从访问 token 获取用户信息的逻辑在不同语言中是相同的。有一个记录良好的 Azure 示例,它可以实现您想要在 Java 中实现的目标。请访问并克隆this sample获取不记名 token 。

看看AAD Controller具体部分:

    URL url = new URL("https://graph.microsoft.com/v1.0/users");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();

conn.setRequestMethod("GET");
conn.setRequestProperty("Authorization", "Bearer " + accessToken);
conn.setRequestProperty("Accept","application/json");
int httpResponseCode = conn.getResponseCode();

String goodRespStr = HttpClientHelper.getResponseStringFromConn(conn, true);
// logger.info("goodRespStr ->" + goodRespStr);
int responseCode = conn.getResponseCode();
JSONObject response = HttpClientHelper.processGoodRespStr(responseCode, goodRespStr);
JSONArray users;

users = JSONHelper.fetchDirectoryObjectJSONArray(response);

StringBuilder builder = new StringBuilder();
User user;
for (int i = 0; i < users.length(); i++) {
JSONObject thisUserJSONObject = users.optJSONObject(i);
user = new User();
JSONHelper.convertJSONObjectToDirectoryObject(thisUserJSONObject, user);
builder.append(user.getUserPrincipalName() + "<br/>");
}
return builder.toString();
}

关于java - 从 azure 登录获取 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52550212/

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