我们知道,使用 kerberos 时 java 代码中最关键的配置项是指定默认的realm和默认的kdc,一般我们可以通过在代码中配置环境变量 java.security.krb5.realm 和
java.security.krb5.kdc 来指定以上两者的默认值,且这两个配置项总是成对出现的,即要么不做配置,要么一起配置。

那么如果 java 代码中没有配置以上两个系统参数,程序又是如何获取默认的realm和默认的kdc呢?这就涉及到 kerberos 配置文件的具体配置项了(配置文件一般是 krb5.conf )。在此跟大家简单分享下 java 代码是如何寻找 kerberos 配置文件的。

  1. 如果配置了系统参数 java.security.krb5.conf,就使用该变量的值来确定配置文件的目录和具体文件名(文件名不一定总是krb5.conf);

  2. 如果没有配置系统参数 java.security.krb5.conf, 则会尝试从以下目录加载配置文件 krb5.conf:
            <java-home>\lib\security (Windows)
            <java-home>/lib/security (Solaris and Linux)

  3. 如果经过以上两步,仍然没有确定 kerberos 配置文件,则会尝试通过以目录确定该配置文件:
            /etc/krb5/krb5.conf (Solaris)
            c:\winnt\krb5.ini (Windows)
            /etc/krb5.conf (Linux)

  4. 经过以上三步,如果仍然没有确定具体的 kerberos 配置文件,则当尝试寻找的不是默认的 realm 和 KDC相关信息时, 程序具体的响应行为跟代码具体实现有关(如com.sun.security.auth.module.Krb5LoginModule);当尝试寻找的是默认的realm 和 KDC相关信息时(当然只有在没有通过配置系统参数java.security.krb5.realm 和 java.security.krb5.kdc 时才会尝试寻找默认的realm 和 kdc 相关信息), 则会抛出异常。

note: 如果配置了系统参数 java.security.krb5.realm 和
java.security.krb5.kdc,则没有办法做 cross-realm authentication,除非在 krb5.conf 中提供了 cross-realm authentication 需要的相应信息。

浅析java代码是如何获取kerberos principal 的realm和kdc相关信息的相关推荐

  1. 百度地图根据经纬度获取国家、州市等地址相关信息

    这是一个简单的经纬度转换成具体地址信息,支持国际和国内经纬度转换. 效果如下图所示: function xmlToArray2($xml) { // 将XML转为array $array_data = ...

  2. HTML获取当前时间年月日时分秒等相关信息

    HTML获取当前时间年月日时分秒等相关信息 [方式一]获取整段时间 <!DOCTYPE html> <html lang="en"> <head> ...

  3. java weka命令行_使用自己的Java代码和模型获取WEKA中的预测百分比

    概观 我知道可以通过GUI和命令行选项在训练有素的WEKA模型中获得每个预测的百分比,如文档文章"Making predictions"中所方便解释和演示的那样. 预测 我知道有三 ...

  4. 用纯Java代码根据IP获取windows和linux的MAC物理地址

    一.环境介绍 1.最近在使用struts2和JSP开发web网页时,碰到一个问题,我需要在后台根据ip获取访问服务器的物理地址,然后进行其他业务处理,但是我发现我在后台没有对应的接口或函数能够满足我. ...

  5. 使用Java代码在应用层获取Android系统属性

    之前使用Native代码的property_get()/property_set()来获取Android系统属性,现在需要改写到Java上面, 但是System.getProperty() / Sys ...

  6. 一行Java代码竟能获取tomcat的绝对路径

    场景 有时需要获取Tomcat服务器的绝对地址. 实现 System.getProperty("catalina.home"); 验证: 在后台action中添加 String p ...

  7. 网站分类前导:获取网站标题和描述及对相关信息进行分词处理

    前言: 之前,笔者做过一些关于网络爬虫的东西.而且爬取的效果还可以.不过还有一些爬虫的博客没有完成,在后期会将其更新完成.而之前的爬虫只是对网页中的URL进行提取,我想做的效果是能对这些网页进行分类. ...

  8. 在线运行Java代码获取APNIC中国区的ip段,用作绕过国内ip

    如题,不废话了,直接上java代码.这个获取的IP段是最新的国内IP段. import java.io.*; import java.net.HttpURLConnection; import jav ...

  9. Java 代码如何获取CPU核心数和定义线程池的核心数

    在自定义线程池的时候,我们应该如何选择线程的核心数量? 这里又一个简单的方法供大家参考. CPU 密集型:线程数量=cpu核心数量 IO 密集型:线程数量=cpu核心数量*2 // 那么在java代码 ...

最新文章

  1. 自定义Kubernetes调度程序来编排高可用性应用程序
  2. 全景图拍摄_全景效果图制作软件如何选择?全景图拍摄有哪些步骤?
  3. J2ME手游开发日记
  4. MySQL—ERROR 2002 (HY000): '/var/lib/mysql/mysql.sock'解决记录
  5. 消息称高通可供货华为:麒麟处理器真将绝版?
  6. DOS下常用命令大集合
  7. linux下挂载光驱
  8. python实现MD5加密
  9. [转载] 使用神经网络和ml模型预测客户流失
  10. DJANGO中操作数据库
  11. 函数参数中的中括号代表什么
  12. Ubuntu常用软件推荐
  13. 草蛋的Android studio 居然让我搞了好几天 真是智障啊non-zero exit value 2
  14. 离线Linux时间手动校准
  15. Glide 的 transformation
  16. 阶梯压测线程 jp@gc - Stepping Thread Group (deprecated)
  17. 如何无线接收服务器封包,大大通|如何抓取802.11a/b/g/n/ac 的无线网络封包
  18. iOS6和iOS7代码的适配(2)——status bar
  19. 基于QT平台的手持媒体播放器项目实战视频教程下载
  20. bootstrap表单验证

热门文章

  1. 中山大学_预推免_机试
  2. PMP工具对比(汇总版)
  3. 【2023秋招】10月19日华为通用软件开发三道题
  4. 如何修改服务器cpu主频,服务器cpu参数怎么看【图文】
  5. Vue实现文字转语音,语音播报
  6. 离线采集普遍解决方案
  7. linux下dd做优盘启动_Linux中制作U盘启动盘的三种方法,使用启动盘创建器/dd命令和Etcher...
  8. vue el-date-picker组件 选中时获取当前日期时间带时分秒
  9. SpringBoot+Mybatis-plus:使用枚举接收参数并返回数据
  10. ps中减淡工具的使用和ps抠毛发换背景案例