Java 如何调用MitridC服务器?
我使用的是来自的Spring Boot MitreID OIDC应用程序。运行正常,我可以登录,但没有其他可用选项: 我正在尝试使用访问它。在简单web应用中,我尝试使用URI登录:。这使得:Java 如何调用MitridC服务器?,java,spring-boot,openid-connect,mitreid-connect,Java,Spring Boot,Openid Connect,Mitreid Connect,我使用的是来自的Spring Boot MitreID OIDC应用程序。运行正常,我可以登录,但没有其他可用选项: 我正在尝试使用访问它。在简单web应用中,我尝试使用URI登录:。这使得: WARN : org.mitre.openid.connect.client.service.impl.DynamicServerConfigurationService - Couldn't load configuration for http://localhost:8080/openid-co
WARN : org.mitre.openid.connect.client.service.impl.DynamicServerConfigurationService -
Couldn't load configuration for http://localhost:8080/openid-connect-server-webapp/:
com.google.common.util.concurrent.UncheckedExecutionException:
org.springframework.web.client.HttpClientErrorException: 404
ERROR: org.mitre.openid.connect.client.OIDCAuthenticationFilter - No server
configuration found for issuer: http://localhost:8080/openid-connect-server-webapp/
编辑:当我尝试时,我得到:
谁能给我指出正确的方向吗
仅供参考,simple web app只有一个java类:
package org.mitre.web;
import java.security.Principal;
import java.util.Locale;
import java.util.Set;
import javax.annotation.Resource;
import org.mitre.openid.connect.client.OIDCAuthenticationFilter;
import org.mitre.openid.connect.client.SubjectIssuerGrantedAuthority;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
// filter reference so we can get class names and things like that.
@Autowired
private OIDCAuthenticationFilter filter;
@Resource(name = "namedAdmins")
private Set<SubjectIssuerGrantedAuthority> admins;
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model, Principal p) {
model.addAttribute("issuerServiceClass", filter.getIssuerService().getClass().getSimpleName());
model.addAttribute("serverConfigurationServiceClass", filter.getServerConfigurationService().getClass().getSimpleName());
model.addAttribute("clientConfigurationServiceClass", filter.getClientConfigurationService().getClass().getSimpleName());
model.addAttribute("authRequestOptionsServiceClass", filter.getAuthRequestOptionsService().getClass().getSimpleName());
model.addAttribute("authRequestUriBuilderClass", filter.getAuthRequestUrlBuilder().getClass().getSimpleName());
model.addAttribute("admins", admins);
return "home";
}
@RequestMapping("/user")
@PreAuthorize("hasRole('ROLE_USER')")
public String user(Principal p) {
return "user";
}
@RequestMapping("/open")
public String open(Principal p) {
return "open";
}
@RequestMapping("/admin")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public String admin(Model model, Principal p) {
model.addAttribute("admins", admins);
return "admin";
}
@RequestMapping("/login")
public String login(Principal p) {
return "login";
}
}
package org.mitre.web;
导入java.security.Principal;
导入java.util.Locale;
导入java.util.Set;
导入javax.annotation.Resource;
导入org.mitre.openid.connect.client.OIDCAuthenticationFilter;
导入org.mitre.openid.connect.client.SubjectIssuerGrantedAuthority;
导入org.slf4j.Logger;
导入org.slf4j.LoggerFactory;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.security.access.prepost.PreAuthorize;
导入org.springframework.stereotype.Controller;
导入org.springframework.ui.Model;
导入org.springframework.web.bind.annotation.RequestMapping;
导入org.springframework.web.bind.annotation.RequestMethod;
/**
*处理应用程序主页的请求。
*/
@控制器
公共类家庭控制器{
私有静态最终记录器Logger=LoggerFactory.getLogger(HomeController.class);
//过滤引用,这样我们就可以得到类名之类的东西。
@自动连线
私人身份验证过滤器;
@资源(name=“namedAdmins”)
私有集管理员;
/**
*只需通过返回主视图的名称来选择要渲染的主视图。
*/
@RequestMapping(value=“/”,method=RequestMethod.GET)
公共字符串主页(区域设置、模型模型、主体p){
addAttribute(“issuerServiceClass”,filter.getIssuerService().getClass().getSimpleName());
model.addAttribute(“serverConfigurationServiceClass”,filter.getServerConfigurationService().getClass().getSimpleName());
model.addAttribute(“clientConfigurationServiceClass”,filter.getClientConfigurationService().getClass().getSimpleName());
model.addAttribute(“authRequestOptionsServiceClass”,filter.getAuthRequestOptionsService().getClass().getSimpleName());
model.addAttribute(“authRequestUriBuilderClass”,filter.getAuthRequestUrlBuilder().getClass().getSimpleName());
addAttribute(“admins”,admins);
返回“家”;
}
@请求映射(“/user”)
@预授权(“hasRole('ROLE_USER'))
公共字符串用户(主体p){
返回“用户”;
}
@请求映射(“/open”)
公共字符串打开(主体p){
返回“打开”;
}
@请求映射(“/admin”)
@预授权(“hasRole('ROLE_ADMIN'))
公共字符串管理(模型,主体p){
addAttribute(“admins”,admins);
返回“admin”;
}
@请求映射(“/login”)
公共字符串登录(主体p){
返回“登录”;
}
}
MitreID正在根目录上提供服务,但示例应用正在/openid connect server webapp/
您将要更改示例应用程序以指向正确的颁发者。。。。(可能在示例应用程序的application.properties中?)
查看示例应用程序将遇到的所有端点谢谢!对不起,忘了提一下:我试过了。我已经编辑了这个问题。等等……请您再解释一下“MitreID服务器配置不正确(可能是针对发卡机构属性)”的情况好吗?此示例未配置为与spring引导叉一起使用。在Thansk中查找发行人引用。删除该文件中对openid connect server webapp的引用使其正常工作。或者更确切地说,它给出了一个不同的错误。新问题。
package org.mitre.web;
import java.security.Principal;
import java.util.Locale;
import java.util.Set;
import javax.annotation.Resource;
import org.mitre.openid.connect.client.OIDCAuthenticationFilter;
import org.mitre.openid.connect.client.SubjectIssuerGrantedAuthority;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
/**
* Handles requests for the application home page.
*/
@Controller
public class HomeController {
private static final Logger logger = LoggerFactory.getLogger(HomeController.class);
// filter reference so we can get class names and things like that.
@Autowired
private OIDCAuthenticationFilter filter;
@Resource(name = "namedAdmins")
private Set<SubjectIssuerGrantedAuthority> admins;
/**
* Simply selects the home view to render by returning its name.
*/
@RequestMapping(value = "/", method = RequestMethod.GET)
public String home(Locale locale, Model model, Principal p) {
model.addAttribute("issuerServiceClass", filter.getIssuerService().getClass().getSimpleName());
model.addAttribute("serverConfigurationServiceClass", filter.getServerConfigurationService().getClass().getSimpleName());
model.addAttribute("clientConfigurationServiceClass", filter.getClientConfigurationService().getClass().getSimpleName());
model.addAttribute("authRequestOptionsServiceClass", filter.getAuthRequestOptionsService().getClass().getSimpleName());
model.addAttribute("authRequestUriBuilderClass", filter.getAuthRequestUrlBuilder().getClass().getSimpleName());
model.addAttribute("admins", admins);
return "home";
}
@RequestMapping("/user")
@PreAuthorize("hasRole('ROLE_USER')")
public String user(Principal p) {
return "user";
}
@RequestMapping("/open")
public String open(Principal p) {
return "open";
}
@RequestMapping("/admin")
@PreAuthorize("hasRole('ROLE_ADMIN')")
public String admin(Model model, Principal p) {
model.addAttribute("admins", admins);
return "admin";
}
@RequestMapping("/login")
public String login(Principal p) {
return "login";
}
}