প্রবাহ প্রমাণীকরণ

জেনকিট প্রবাহ-স্তরের প্রমাণীকরণ সমর্থন করে, আপনাকে আপনার প্রবাহকে সুরক্ষিত করতে এবং শুধুমাত্র অনুমোদিত ব্যবহারকারীরা সেগুলি কার্যকর করতে পারে তা নিশ্চিত করার অনুমতি দেয়। এইচটিটিপি এন্ডপয়েন্ট হিসাবে প্রবাহ স্থাপন করার সময় এটি বিশেষভাবে কার্যকর।

প্রবাহ প্রমাণীকরণ কনফিগার করা হচ্ছে

একটি প্রবাহে প্রমাণীকরণ যোগ করতে, আপনি প্রবাহ সংজ্ঞায়িত করার সময় 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 Auth প্লাগইন ব্যবহার করে

Firebase auth প্লাগইন আপনার Genkit প্রবাহের সাথে Firebase প্রমাণীকরণকে একীভূত করার একটি সহজ উপায় প্রদান করে। এটি কীভাবে ব্যবহার করবেন তা এখানে:

  1. Firebase প্লাগইন আমদানি করুন:

    import "github.com/firebase/genkit/go/plugins/firebase"
    
  2. একটি Firebase প্রমাণ প্রদানকারী তৈরি করুন:

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

    NewAuth ফাংশন তিনটি আর্গুমেন্ট নেয়:

    • ctx : ফায়ারবেস ইনিশিয়ালাইজেশনের প্রসঙ্গ।
    • policy : একটি ফাংশন যা আপনার অনুমোদনের যুক্তি সংজ্ঞায়িত করে।
    • required : একটি বুলিয়ান নির্দেশ করে যে সরাসরি কলের জন্য প্রমাণীকরণ প্রয়োজন কিনা।
  3. আপনার প্রবাহ সংজ্ঞায়িত করার সময় প্রমাণীকরণ প্রদানকারী ব্যবহার করুন:

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

HTTP অনুরোধে প্রমাণীকরণ পরিচালনা করা

যখন আপনার ফ্লো একটি HTTP এন্ডপয়েন্ট হিসাবে স্থাপন করা হয়, তখন Firebase auth প্লাগইন স্বয়ংক্রিয়ভাবে আগত অনুরোধগুলির জন্য প্রমাণীকরণ পরিচালনা করবে। এটি HTTP অনুরোধের অনুমোদন শিরোনামে একটি বহনকারী টোকেন আশা করে।

স্থানীয়ভাবে প্রমাণীকৃত প্রবাহ চলছে

স্থানীয়ভাবে বা অন্যান্য প্রবাহের মধ্যে থেকে প্রমাণীকৃত প্রবাহ চালানোর সময়, আপনি WithLocalAuth বিকল্পটি ব্যবহার করে স্থানীয় প্রমাণীকরণ প্রসঙ্গ প্রদান করতে পারেন:

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

এটি আপনাকে বৈধ ফায়ারবেস টোকেন প্রদানের প্রয়োজন ছাড়াই প্রমাণীকৃত প্রবাহ পরীক্ষা করতে দেয়।