MCPcopy Create free account
hub / github.com/0xUnixIO/pulse / BuildRedirectURL

Method BuildRedirectURL

internal/auth/discourse.go:55–68  ·  view source on GitHub ↗

BuildRedirectURL 构造跳转到 Discourse 的 SSO 发起 URL。 returnURL 是 Discourse 认证完成后的回调地址(即本服务的 callback 端点)。

(returnURL string)

Source from the content-addressed store, hash-verified

53// BuildRedirectURL 构造跳转到 Discourse 的 SSO 发起 URL。
54// returnURL 是 Discourse 认证完成后的回调地址(即本服务的 callback 端点)。
55func (d *DiscourseConfig) BuildRedirectURL(returnURL string) (string, error) {
56 nonce, err := d.generateNonce()
57 if err != nil {
58 return "", fmt.Errorf("generate nonce: %w", err)
59 }
60 payload := url.Values{
61 "nonce": {nonce},
62 "return_sso_url": {returnURL},
63 }.Encode()
64 encoded := base64.StdEncoding.EncodeToString([]byte(payload))
65 sig := d.sign(encoded)
66 target := d.URL + "/session/sso_provider"
67 return fmt.Sprintf("%s?sso=%s&sig=%s", target, url.QueryEscape(encoded), sig), nil
68}
69
70// ParseCallback 验证并解析 Discourse 回调的 sso/sig 参数,返回 Discourse 用户名。
71func (d *DiscourseConfig) ParseCallback(rawSSO, sig string) (string, error) {

Callers 1

discourseRedirectMethod · 0.80

Calls 2

generateNonceMethod · 0.95
signMethod · 0.95

Tested by

no test coverage detected