फ़्लो ऑथेंटिकेशन

Genkit, फ़्लो-लेवल पर पुष्टि करने की सुविधा देता है. इससे आपको अपने फ़्लो सुरक्षित करने में मदद मिलती है. साथ ही, यह पक्का किया जा सकता है कि सिर्फ़ अनुमति वाले उपयोगकर्ता ही उन फ़्लो पर काम कर सकते हैं. यह खास तौर पर तब मददगार होता है, जब फ़्लो को एचटीटीपी एंडपॉइंट के तौर पर डिप्लॉय किया जाता है.

फ़्लो ऑथेंटिकेशन कॉन्फ़िगर करना

फ़्लो में पुष्टि जोड़ने के लिए, फ़्लो तय करते समय WithFlowAuth विकल्प का इस्तेमाल किया जा सकता है. यह विकल्प, FlowAuth इंटरफ़ेस को लागू करने के बाद काम करता है. इसमें, पुष्टि करने और अनुमति देने के तरीके उपलब्ध होते हैं.

यहां दिए गए उदाहरण में, पुष्टि करने की प्रक्रिया को तय करने का तरीका बताया गया है:

ctx := context.Background()
// Define an auth policy and create a Firebase auth provider
firebaseAuth, err := firebase.NewAuth(ctx, func(authContext genkit.AuthContext, input any) error {
	// The type must match the input type of the flow.
	userID := input.(string)
	if authContext == nil || authContext["UID"] != userID {
		return errors.New("user ID does not match")
	}
	return nil
}, true)
if err != nil {
	log.Fatalf("failed to set up Firebase auth: %v", err)
}
// Define a flow with authentication
authenticatedFlow := genkit.DefineFlow(
	"authenticated-flow",
	func(ctx context.Context, userID string) (string, error) {
		return fmt.Sprintf("Secure data for user %s", userID), nil
	},
	genkit.WithFlowAuth(firebaseAuth),
)

इस उदाहरण में, हम पुष्टि करने को मैनेज करने के लिए, Firebase पुष्टि करने वाले प्लगिन का इस्तेमाल कर रहे हैं. policy फ़ंक्शन, अनुमति देने वाला लॉजिक तय करता है. इससे यह जांच की जाती है कि ऑथराइज़ेशन कॉन्टेक्स्ट में मौजूद यूज़र आईडी, इनपुट यूज़र आईडी से मैच करता है या नहीं.

Firebase पुष्टि प्लगिन का इस्तेमाल करना

Firebase पुष्टि करने वाले प्लगिन की मदद से, Genkit के फ़्लो के साथ Firebase से पुष्टि करने की सुविधा को आसानी से इंटिग्रेट किया जा सकता है. अब जानते हैं कि इन लेखों को ऐक्सेस करने का क्या तरीका है:

  1. Firebase प्लग इन इंपोर्ट करें:

    import "github.com/firebase/genkit/go/plugins/firebase"
    
  2. Firebase को पुष्टि करने वाला प्रोवाइडर बनाएं:

    firebaseAuth, err := firebase.NewAuth(ctx, policy, required)
    

    NewAuth फ़ंक्शन में तीन आर्ग्युमेंट होते हैं:

    • ctx: Firebase शुरू करने के लिए कॉन्टेक्स्ट.
    • policy: यह ऐसा फ़ंक्शन है जो अनुमति देने के आपके लॉजिक के बारे में बताता है.
    • required: यह एक बूलियन है जिससे पता चलता है कि डायरेक्ट कॉल के लिए पुष्टि करने की ज़रूरत है या नहीं.
  3. अपना फ़्लो तय करते समय, पुष्टि करने वाली कंपनी का इस्तेमाल करें:

    genkit.DefineFlow("secureUserFlow", userDataFunc, genkit.WithFlowAuth(firebaseAuth))
    

एचटीटीपी अनुरोधों में पुष्टि को मैनेज करना

जब आपका फ़्लो, एचटीटीपी एंडपॉइंट के तौर पर डिप्लॉय किया जाता है, तो Firebase पुष्टि करने वाला प्लगिन, आने वाले अनुरोधों की पुष्टि करने को अपने-आप मैनेज कर लेगा. इसे एचटीटीपी अनुरोध के ऑथराइज़ेशन हेडर में बेयरर टोकन की ज़रूरत होती है.

स्थानीय रूप से पुष्टि किए गए फ़्लो चलाना

अगर पुष्टि की गई प्रोसेस लोकल या किसी अन्य फ़्लो में चल रही है, तो WithLocalAuth विकल्प का इस्तेमाल करके, पुष्टि की स्थानीय जानकारी दी जा सकती है:

response, err := authenticatedFlow.Run(ctx, "user123",
	genkit.WithLocalAuth(map[string]any{"UID": "user123"}))

इसकी मदद से, पुष्टि किए गए फ़्लो की जांच की जा सकती है. इसके लिए, आपको कोई मान्य Firebase टोकन देने की ज़रूरत नहीं होती.