- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用我自己的ClientDetailsServiceConfigurer
实现,所以我这样做:
OAuthConfig.java
@Override
public void configure(ClientDetailsServiceConfigurer clients) throws Exception {
clients.withClientDetails(this.customClientDetailsManager);
}
CustomClientDetailsManager.java
@Service
public class CustomClientDetailsManager implements ClientDetailsService {
final static Logger log = LoggerFactory.getLogger(CustomClientDetailsManager.class);
private final CustomerService customerService;
@Inject
public CustomClientDetailsManager(final CustomerService customerService) {
this.customerService = customerService;
}
@Override
public ClientDetails loadClientByClientId(String clientId) throws ClientRegistrationException {
final Customer customer = customerService.getCustomerByClientId(clientId);
log.debug("****** Customer is: " + customer.getClientId());
log.debug("****** Customer Secret is: " + customer.getClientSecret());
log.debug("****** Client ID Coming from Request is: " + clientId);
final BaseClientDetails details = new BaseClientDetails();
details.setClientId(clientId);
log.debug("*** Client id: " + clientId );
details.setAuthorizedGrantTypes(Arrays.asList(customer.getAuthorizedGrantTypes()));
log.debug("*** AuthorizedGrantTypes: " + Arrays.asList(customer.getAuthorizedGrantTypes()));
details.setScope(Arrays.asList(customer.getScope()));
log.debug("*** Scope: " + Arrays.asList(customer.getScope()));
details.setResourceIds(Arrays.asList(customer.getResourceIds()));
log.debug("*** ResourceIds: " + Arrays.asList(customer.getResourceIds()));
final Set<GrantedAuthority> authorities = new HashSet<GrantedAuthority>();
authorities.add(new SimpleGrantedAuthority(customer.getAuthorities()));
details.setAuthorities(authorities);
authorities.forEach(authority -> {
log.debug("*** Authority: " + authority);
});
log.debug("Returning details...");
return details;
}
所以基本上我是通过 loadClientByClientId(String clientId)
获取我的 ClientId
但我想要一种允许我获取我的客户端 ID 和客户端 key 的方法。
有什么线索吗?谢谢
最佳答案
终于找到解决办法了。
您需要创建一个实现“ClientDetails”的“CustomClientDetails”并返回它。
例如:
public class CustomClientDetails implements ClientDetails {
final static Logger log = LoggerFactory.getLogger(CustomClientDetailsManager.class);
private static final long serialVersionUID = 6725149038554040628L;
private Customer customer;
public CustomClientDetails(final Customer customer) {
this.customer = customer;
}
@Override
public Integer getAccessTokenValiditySeconds() {
return customer.getAccessTokenValidity();
}
@Override
public Map<String, Object> getAdditionalInformation() {
final Set<String> additionalInformation = new HashSet<String>();
additionalInformation.add(customer.getAdditionalInformation());
return null;
}
@Override
public Collection<GrantedAuthority> getAuthorities() {
final Set<GrantedAuthority> authorities = new HashSet<GrantedAuthority>();
authorities.add(new SimpleGrantedAuthority(customer.getAuthorities()));
return authorities;
}
@Override
public Set<String> getAuthorizedGrantTypes() {
final Set<String> authorizedGrantTypes = new HashSet<String>();
authorizedGrantTypes.add(customer.getAuthorizedGrantTypes());
return authorizedGrantTypes;
}
@Override
public String getClientId() {
return customer.getClientId();
}
@Override
public String getClientSecret() {
return customer.getClientSecret();
}
@Override
public Integer getRefreshTokenValiditySeconds() {
return customer.getRefreshTokenValidity();
}
@Override
public Set<String> getRegisteredRedirectUri() {
final Set<String> registeredRedirectUris = new HashSet<String>();
registeredRedirectUris.add(customer.getWebServerRedirectUri());
return registeredRedirectUris;
}
@Override
public Set<String> getResourceIds() {
final Set<String> resourcesIds = new HashSet<String>();
resourcesIds.add(customer.getResourceIds());
return resourcesIds;
}
@Override
public Set<String> getScope() {
final Set<String> scopes = new HashSet<String>();
scopes.add(customer.getScope());
return scopes;
}
@Override
public boolean isAutoApprove(String scope) {
return false; //TODO: for some reason this is always false
}
@Override
public boolean isScoped() {
return true; //TODO: for some reason this is always true
}
@Override
public boolean isSecretRequired() {
return true; //TODO: for some reason this is always true
}
}
public class CustomClientDetailsManager implements ClientDetailsService {
final static Logger log = LoggerFactory.getLogger(CustomClientDetailsManager.class);
private final CustomerService customerService;
@Inject
public CustomClientDetailsManager(final CustomerService customerService) {
this.customerService = customerService;
}
@Override
public ClientDetails loadClientByClientId(String clientId) throws ClientRegistrationException {
final Customer customer = customerService.getCustomerByClientId(clientId);
final CustomClientDetails customClientDetails = new CustomClientDetails(customer);
return customClientDetails;
}
关于java - 如何通过 ClientId 和 ClientSecret 加载客户端详细信息 - OAuth 2.0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41387997/
我在核心 3.1 中使用谷歌身份验证。以前,我的代码运行良好,但在使用系统格式后,项目出现异常。*ArgumentException:必须提供“ClientId”选项。 (参数'ClientId')M
这是 .aspx 文件中的代码 Login Again function Validate() { if (document.getEle
我希望能够让各个用户使用 SignalR 相互发送消息,因此我需要发送到特定的客户端 ID。如何在 session 开始时为特定用户定义客户端 ID - 例如用户的 GUID 主键? 最佳答案 将 I
我正在尝试获取数据表中组件的客户端 ID。问题是 jsf 自动将行索引放在组件 id 之前,即 Update 对于第二行中的链接(索引 = 1)。 我正在使用以下方法来获取 clientId
我在页面上有 7 个 7 周的复选框和 7 天的单独时间选择器。选中复选框后,我想显示该工作日的时间选择器,如果未选中,我想隐藏相应的时间选择器 我已经使用以下代码来获取它,它也能正常工作。 func
我得到了一个我绑定(bind)到转发器的用户控件列表。 用户控件:(示例)“AppProduct” 转发器:
我在 Repeater 的 ItemTemplate 中有一个 TextBox,它也在 ItemTemplate 中。 服务器端我有: protected void txtValorMaterialA
由于指定clienID只是类MqttAndroidClient中的一个特性,在使用类IMqttClient和时不能指定IMqttAsynchClient. 连接具有唯一ID 的客户端的真正目的是什么?
我们在 Google Analytics 中定义了三个自定义维度: ClientId (dimension1): session 范围 SessionId (dimension2): session
我有一个中继器,里面有一些控件,其中一个是文本框。我正在尝试使用 jquery 获取文本框,我的代码如下所示: $("#").click(function (event) {}); 但我总是得到 nu
我有一个应用程序将由两个不同的实体使用,每个实体都有自己的 Azure Active Directory。 最初,我使用的代码是: var msalConfig = { auth: {
有谁知道在 Azure 中哪里可以找到我的 Azure Active Directory Graph 客户端 ID?我已经在 Azure 内部到处搜索过,但仍然没有运气。或者是否有人知道 powers
我在 .ascx 用户控件中遇到 扩展问题。 我有一个 .js 文件,其中包含 JavaScript 函数: function doSomething(objectId) { ... } 我
我正在尝试 Spring OAuth2 库的非常基本的实现;但是,当我向服务器发送请求时,我收到以下错误: { "error": "invalid_client", "error_descriptio
我有几个应该处理单个 bean 产生的不同类型错误的元素。现在,我从浏览器获取的某个元素的 clientID 始终相同,因为内部没有生成的 id(总共 3 个 ID)。 无论我将哪个 clientID
我有一个组合组件,它捆绑了一些输入字段。该组件将在页面上多次使用,并包含一个按钮,用于复制其中另一个组件的值。为此,我需要通过其 clientId 访问其中一个 sibling 作为 的目标 我的问
我试图在文档中找到它,但我没有在任何地方看到它。 在 CometD 中,clientId 的生命周期是多久? 因此,客户端登录并成功握手。现在他们有一个与服务器上的 session 关联的 clien
我可以获得所有 jms 主题订阅者的 ClientID 吗?我使用 Jboss AS 6 (HornetQ)。 当然,我可以向他们所有人发送查询并阅读回复,但我正在寻找更优雅的解决方案。 最佳答案 通
我想在动态生成的控件中设置所需的 ClientID。如果您有任何想法将所需的 ClientID 设置为控件而不是告诉我,则 ClientID 是只读的 最佳答案 这只能在 .Net 4 及更高版本中完
我在网格控件中有一个文本框控件。我想使用带有“”之类的 javascript 获取 textBox 的 clientID。但是我收到一条错误消息,指出当前上下文中不存在 txtBox。文本框以编程方式
我是一名优秀的程序员,十分优秀!