debug.go 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. package main
  2. import (
  3. "encoding/hex"
  4. "fmt"
  5. "github.com/jcmturner/gokrb5/client"
  6. "github.com/jcmturner/gokrb5/config"
  7. "github.com/jcmturner/gokrb5/keytab"
  8. "github.com/jcmturner/gokrb5/testdata"
  9. "net/http"
  10. "os"
  11. "time"
  12. )
  13. const krb5conf = `[libdefaults]
  14. default_realm = TEST.GOKRB5
  15. dns_lookup_realm = false
  16. dns_lookup_kdc = false
  17. ticket_lifetime = 3m
  18. renew_lifetime = 7m
  19. forwardable = yes
  20. default_tkt_enctypes = aes256-cts-hmac-sha1-96
  21. [realms]
  22. TEST.GOKRB5 = {
  23. kdc = 10.80.88.88:88
  24. admin_server = 10.80.88.88:749
  25. default_domain = test.gokrb5
  26. }
  27. [domain_realm]
  28. .test.gokrb5 = TEST.GOKRB5
  29. test.gokrb5 = TEST.GOKRB5
  30. `
  31. func main() {
  32. httpRequest()
  33. //runClient()
  34. }
  35. func runClient() {
  36. b, err := hex.DecodeString(testdata.TESTUSER1_KEYTAB)
  37. kt, _ := keytab.Parse(b)
  38. c, _ := config.NewConfigFromString(krb5conf)
  39. cl := client.NewClientWithKeytab("testuser1", "TEST.GOKRB5", kt)
  40. cl.WithConfig(c)
  41. err = cl.Login()
  42. if err != nil {
  43. fmt.Fprintf(os.Stderr, "Error on AS_REQ: %v\n", err)
  44. }
  45. cl.EnableAutoSessionRenewal()
  46. for i := 0; i < 15; i++ {
  47. tkt, _, err := cl.GetServiceTicket("HTTP/host.test.gokrb5")
  48. if err != nil {
  49. fmt.Fprintf(os.Stderr, "Error on TGS_REQ: %v\n", err)
  50. } else {
  51. fmt.Fprintf(os.Stdout, "Service Ticket: %+v\n", tkt)
  52. }
  53. time.Sleep(time.Duration(1) * time.Minute)
  54. }
  55. }
  56. func httpRequest() {
  57. b, err := hex.DecodeString(testdata.TESTUSER1_KEYTAB)
  58. kt, _ := keytab.Parse(b)
  59. c, _ := config.NewConfigFromString(krb5conf)
  60. cl := client.NewClientWithKeytab("testuser1", "TEST.GOKRB5", kt)
  61. cl.WithConfig(c)
  62. err = cl.Login()
  63. if err != nil {
  64. fmt.Fprintf(os.Stderr, "Error on AS_REQ: %v\n", err)
  65. }
  66. r, _ := http.NewRequest("GET", "http://host.test.gokrb5/index.html", nil)
  67. cl.SetSPNEGOHeader(r, "HTTP/host.test.gokrb5")
  68. httpResp, err := http.DefaultClient.Do(r)
  69. fmt.Fprintf(os.Stderr, "RESPONSE CODE: %v\n", httpResp.StatusCode)
  70. }