【问题标题】:How to use Windows Authentication in PCF?如何在 PCF 中使用 Windows 身份验证?
【发布时间】:2019-01-16 23:41:05
【问题描述】:

我正在尝试从部署在 PCF 中的 .net 核心应用程序连接到 SQL Server。当我使用用户名和密码时,我可以连接。 但无法配置 Windows 身份验证。我的应用需要使用 Windows 身份验证

此链接 (https://github.com/Microsoft/vscode-mssql/issues/985#issuecomment-345408856) 说在 SQL 中启用 Kerberos 身份验证。

我已经用 kerberos 配置了 SQL 服务器。仍然无法连接。还需要什么?

连接时出现异常:

无法访问 Kerberos 票证。确保 Kerberos 已使用“kinit”进行初始化。

【问题讨论】:

    标签: .net sql-server asp.net-core-mvc cloud pcf


    【解决方案1】:

    根据https://dotnet-cookbook.cfapps.io/wcf/ 上的帖子,PCF 不支持 Windows 身份验证 -

    由于 Cloud Foundry 单元及其容器未加入域,因此它们无法使用 Active Directory 帐户对调用进行身份验证。另一种选择可能是使用基本身份验证而不是 https 或基于证书的身份验证

    【讨论】:

      【解决方案2】:

      这个答案不正确。我能够使用 kerberos 从 PCF 连接到 SQL Server。
      首先,我创建了一个用于连接数据库的用户 ID 和密码,并通过 Windows 身份验证检查我是否能够连接到数据库。
      然后我创建了一个 krb5.config。
      一个示例文件

      [libdefaults]
          renew_lifetime = 7d
          forwardable = false
          default_realm = ABC.NET
          ticket_lifetime = 24h
          dns_lookup_realm = false
          dns_lookup_kdc = false
          #default_tgs_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
          #default_tkt_enctypes = aes des3-cbc-sha1 rc4 des-cbc-md5
          #hortonworks hive jdbc troubleshooting
          udp_preference_limit = 1
          
          
          [domain_realm]
              abc.net = ABC.NET
          
          [logging]
              default = FILE:/var/log/krb5kdc.log
              admin_server = FILE:/var/log/kadmind.log
              kdc = FILE:/var/log/krb5kdc.log
          
          [realms]
              ABC.NET = {
                  admin_server = server.abc.net
                  kdc = server.abc.net
              }
      

      随后我创建了一个 SQLDriver 配置文件:

      SQLJDBCDriver {
          com.sun.security.auth.module.Krb5LoginModule required
          debug=true
          useTicketCache=true
          renewTGT=true
          ticketCache="/home/vcap/app/krb_ticket"
          useKeyTab=true
          keyTab="/home/vcap/app/BOOT-INF/classes/test.keytab"
          principal="userid@ABC.NET"
          useFirstPass=true
          tryFirstPass=true
          storePass=true
          storeKey=true
          serviceName="database-host-name"
      }
          
      JAVA_OPTS: -XX:ParallelGCThreads=8 -XX:MaxPermSize=2048m -XX:+UseConcMarkSweepGC -XX:+UseCompressedOops -XX:MaxDirectMemorySize=512m -Duser.timezone="America/Chicago" -DLOG_FILE="/home/vcap/logs/activity.log" -Djava.security.krb5.conf=/home/vcap/app/BOOT-INF/classes/krb5-test.conf -Dsun.security.krb5.debug=true -Djava.security.krb5.realm=ABC.NET -Djava.security.krb5.kdc=server.abc.net -Djavax.security.auth.useSubjectCredsOnly=false -Djava.security.auth.login.config=/home/vcap/app/BOOT-INF/classes/mssql-jdbc-test.conf
          doNotPrompt=true;
      };
      
      DataSource config
      

      我在资源文件夹中包含了所有配置文件。

      它对我有用

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-12-31
        • 2014-10-21
        • 1970-01-01
        • 2016-08-25
        • 2017-05-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多