Detail:http://docs.oracle.com/cd/E24847_01/html/E22200/overview-61.html

GSS-API 介绍

使用 GSS-API,程序员在编写应用程序时,可以应用通用的安全机制。开发者不必针对任何特定的平台、安全机制、保护类型或传输协议来定制安全实现。使用 GSS-API,程序员可忽略保护网络数据方面的细节。使用 GSS-API 编写的程序在网络安全方面具有更高的可移植性。这种可移植性是通用安全服务 API 的一个特点。

GSS-API 是一个以通用方式为调用者提供安全服务的框架。许多底层机制和技术(如 Kerberos v5 或公钥技术)都支持 GSS-API 框架,如下图所示。

图 4-1 GSS-API 层

从广义上讲,GSS-API 主要具有以下两种功能:

  1. GSS-API 可创建一个安全上下文,应用程序可在该上下文中相互传递数据。上下文是指两个应用程序之间的信任状态。由于共享同一个上下文的应用程序可相互识别,因此可以允许在上下文存在期间进行数据传送。

  2. GSS-API 可向要传送的数据应用一种或多种类型的保护,称为安全服务GSS-API 中的安全服务介绍了安全服务。

此外,GSS-API 还可执行以下功能:

  • 转换数据

  • 检查错误

  • 授予用户特权

  • 显示信息

  • 比较标识

GSS-API 中包括许多支持函数和便利函数。

使用 GSS-API 的应用程序的可移植性

GSS-API 为应用程序提供了以下几种类型的可移植性:

  • 机制无关性。GSS-API 提供了一个用于实现安全性的通用接口。通过指定缺省的安全机制,应用程序无需了解要应用的机制以及该机制的任何详细信息。

  • 协议无关性。GSS-API 与任何通信协议或协议套件均无关。例如,GSS-API 可用于使用套接字、RCP 或 TCP/IP 的应用程序。

    RPCSEC_GSS 是用于将 GSS-API 与 RPC 顺利集成的附加层。有关更多信息,请参见使用 GSS-API 的远程过程调用

  • 平台无关性。GSS-API 与运行应用程序的操作系统的类型无关。

  • 保护质量无关性。保护质量 (Quality of Protection, QOP) 是指一种算法类型,用于加密数据或生成加密标记。通过 GSS-API,程序员可使用 GSS-API 所提供的缺省设置忽略 QOP。另一方面,应用程序可以根据需要指定 QOP。

GSS-API 中的安全服务

GSS-API 提供了三种类型的安全服务:

  • 验证-验证是 GSS-API 提供的基本安全性。验证是指对身份进行验证。如果用户通过了验证,则系统会假设其有权以该用户名进行操作。

  • 完整性- 完整性是指对数据的有效性进行验证。即使数据来自有效用户,数据本身也可能会损坏或遭到破坏。完整性可确保消息与预期的一样完整(未增减任何内容)。 GSS-API 提供的数据附带有一个名为消息完整性代码 (Message Integrity Code, MIC) 的加密标记。MIC 可用于证明收到的数据与发送者所传送的数据是否相同。

  • 保密性-保密性可确保拦截了消息的第三方难以阅读消息内容。验证和完整性机制都不会修改数据。如果数据由于某种原因而被拦截,则其他人可以阅读该数据。因此,可通过 GSS-API 对数据进行加密,前提是提供了支持加密的基础机制。这种数据加密称为保密性。

GSS-API 中的可用机制

当前的 GSS-API 实现可使用以下机制:Kerberos v5、Diffie-Hellman 和 SPNEGO。有关 Kerberos 实现的更多信息,请参见《系统管理指南:安全性服务》中的第 21  章 "Kerberos 服务介绍"。如果任何系统上运行了能够识别 GSS-API 的程序,则应在该系统上安装和运行 Kerberos v5。

使用 GSS-API 的远程过程调用

针对网络应用程序使用 RPC(Remote Procedure Call,远程过程调用)协议的程序员可以使用 RPCSEC_GSS 来提供安全性。RPCSEC_GSS 是位于 GSS-API 上面的一个独立层。RPCSEC_GSS 可提供 GSS-API 的所有功能,但其方式是针对 RPC 进行了调整的。实际上,RPCSC_GSS 可用于向程序员隐藏 GSS-API 的许多方面,从而使 RPC 安全性具有更强的可访问性和可移植性。有关 RPCSEC_GSS 的更多信息,请参见《ONC+ Developer’s Guide》中的"Authentication Using RPCSEC_GSS"

下图说明了 RPCSEC_GSS 层在应用程序和 GSS-API 之间的位置。

图 4-2 RPCSEC_GSS 和 GSS-API

GSS-API 的限制

虽然 GSS-API 使数据保护变得很简单,但是它回避某些任务的做法并不符合 GSS-API 的一般本性。因此,GSS-API 执行以下活动:

  • 为用户或应用程序提供安全凭证。凭证必须由基础安全机制提供。GSS-API 确实允许应用程序自动或显式获取凭证。

  • 在应用程序之间传送数据。应用程序负责处理对等应用程序之间的所有数据传送,无论数据是与安全有关的数据还是明文数据。

  • 区分不同类型的传送数据。例如,GSS-API 无法识别数据包是明文数据还是经过加密的数据。

  • 指示由于异步错误而导致的状态。

  • 缺省情况下保护多进程程序的不同进程之间已发送的信息。

  • 分配要传递到 GSS-API 函数的字符串缓冲区。请参见GSS-API 中的字符串和类似数据

  • 解除分配 GSS-API 数据空间。此内存必须通过 gss_release_buffer()gss_delete_name() 等函数显式解除分配。

GSS-API 的语言绑定

本文档目前仅介绍 GSS-API 的 C 语言绑定,即函数和数据类型。现已推出 Java 绑定版本的 GSS-API。Java GSS-API 包含通用安全服务应用编程接口 (Generic Security Service Application Program Interface, GSS-API) 的 Java 绑定,如 RFC 2853 中所定义。

有关 GSS-API 的更多参考信息

以下两个文档提供有关 GSS-API 的更多信息:

GSS API的更多相关文章

  1. 点单登录原理和java实现简单的单点登录

    引用自:http://blog.csdn.net/zuoluoboy/article/details/12851725 摘要: 单点登录(SSO)的技术被越来越广泛地应用到各个领域的软件系统当中.本文 ...

  2. 单点登录SSO

    转载自 http://www.blogjava.net/xcp/archive/2010/04/13/318125.html   摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当 ...

  3. Atitit  J2EE平台相关规范--39个  3.J2SE平台相关规范--42个

    Atitit  J2EE平台相关规范--39个  3.J2SE平台相关规范--42个 2.J2EE平台相关规范--39个5 XML Parsing Specification16 J2EE Conne ...

  4. Atitit jsr规范有多少个  407个。Jsr规范大全

    Atitit jsr规范有多少个  407个.Jsr规范大全 1.1. JCP维护职能是发展和更新.1 1.2. Java技术规范.参考实现(RI).技术兼容包(TCK)1 1.3. JCP维护的规范 ...

  5. DB2和Oracle区别

    转 http://blog.chinaunix.net/uid-7374279-id-2057574.html 写在前面:今天客户来访(日本人),问我DB2和Oracle区别.因为不是DBA(勉强的理 ...

  6. 编写你自己的单点登录(SSO)服务

    王昱 yuwang881@gmail.com   博客地址http://yuwang881.blog.sohu.com 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统其中.本文从 ...

  7. Java实现SSO

    摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现手段,并且给出Web-SSO ...

  8. java实现简单的单点登录

    java实现简单的单点登录 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统当中.本文从业务的角度分析了单点登录的需求和应用领域:从技术本身的角度分析了单点登录技术的内部机制和实现 ...

  9. 编写自己的单点登录(SSO)服务

    王昱 yuwang881@gmail.com   博客地址http://yuwang881.blog.sohu.com 摘要:单点登录(SSO)的技术被越来越广泛地运用到各个领域的软件系统其中.本文从 ...

随机推荐

  1. 从0到1使用Kubernetes系列(八):Kubernetes安全

    本文是从 0 到 1 使用 Kubernetes 系列第八篇,上一篇从0到1使用Kubernetes系列(七):网络介绍了 K8S 网络相关的内容,本文将带你了解 K8S 的安全问题. Kuberne ...

  2. Java-ASM框架学习-修改类的字节码

    Tips: ASM使用访问者模式,学会访问者模式再看ASM更加清晰 ClassReader 用于读取字节码,父类是Object 主要作用: 分析字节码里各部分内容,如版本.字段等等 配合其他Visit ...

  3. JavaScript高级程序设计读后感(一)之零碎知识点查漏补缺

    目录 1-script延迟脚本defer及异步脚本async,区别及应用场景 2-未声明的变量,未初始化变量 3-Number parseInt 字符串转数值 ,进制转换 4-undefined &a ...

  4. 洛谷 P4135 作诗(分块)

    题目链接 题意:\(n\) 个数,每个数都在 \([1,c]\) 中,\(m\) 次询问,每次问在 \([l,r]\) 中有多少个数出现偶数次.强制在线. \(1 \leq n,m,c \leq 10 ...

  5. linux中的颜色

    echo -e "\033[30m 黑色字 \033[0m" echo -e "\033[31m 红色字 \033[0m" echo -e "\033 ...

  6. Redis队列跟MQ的区别

    Redis队列:Redis队列是一个Key-Value的NoSQL数据库,开发维护很活跃,虽然是一个Key-Value数据库存储系统,但它本身支持MQ功能,所以完全可以当做一个轻量级的队列服务来使用 ...

  7. centos下Spin Version 6.3.2及ispin安装(2014.9.17)

    centos下Spin Version 6.3.2及ispin安装(2014.9.17) 前言:windos下首先安装虚拟机,再安装linux系统(centos版) 一.本帖来源于官网http://s ...

  8. EXCEL excel中运用ctrl+D、ctrl+enter、ctrl+E批量填充数据

    在excel中,利用鼠标拖动可以快速向下或者向右填充序列或者复制单元格.但是利用快捷键也可以实现多种填充方式,本文就为大家介绍一些ctrl系列快捷键的填充,一起来看看吧. 封面tu 一,ctrl+D/ ...

  9. X-MagicBox-820的luatOS之路连载系列6

    继上次用Qt实现了显示地图和MQTT通信之后(X-MagicBox-820的luatOS之路连载系列5),说是要研究下地图的开放接口,也看了标记点和线的方法(地图上自定义标记点和轨迹线的实现).这次就 ...

  10. C#表头固定

    <%@ Control Language="C#" AutoEventWireup="true" CodeFile="info.ascx.cs& ...