rename new version
This commit is contained in:
@@ -0,0 +1,73 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"queryorchestration/internal/rbac" // Replace with your actual module name
|
||||
)
|
||||
|
||||
func main() {
|
||||
// Example with local key provider for testing
|
||||
localProvider := rbac.NewLocalKeyProvider("private_key.pem", "public_key.pem")
|
||||
|
||||
// Generate a mock JWT with multiple Cognito groups
|
||||
groups := []string{"admins", "developers", "querybuilders", "uploaders", "exporters"}
|
||||
tokenString, err := rbac.GenerateMockJWT(localProvider, "test-user-id", "test@example.com", groups)
|
||||
if err != nil {
|
||||
fmt.Println("Error generating token:", err)
|
||||
return
|
||||
}
|
||||
|
||||
fmt.Printf("raw token: %s\n", tokenString)
|
||||
|
||||
token, claims, err := rbac.ValidateJWT(tokenString, localProvider)
|
||||
if err != nil {
|
||||
fmt.Println("Token validation failed:", err)
|
||||
return
|
||||
}
|
||||
|
||||
// Print token details for debugging
|
||||
rbac.PrintTokenDetails(token)
|
||||
|
||||
// Example with Cognito key provider for production
|
||||
/*
|
||||
cognitoProvider := rbac.NewCognitoKeyProvider("us-east-1", "us-east-1_XXXXXXXXX")
|
||||
token, claims, err := rbac.ValidateJWT(tokenString, cognitoProvider)
|
||||
*/
|
||||
|
||||
if token.Valid {
|
||||
// Extract the token details
|
||||
details := rbac.ExtractTokenDetails(token, claims)
|
||||
|
||||
fmt.Println("Token is valid.")
|
||||
fmt.Println("User ID:", details.UserID)
|
||||
fmt.Println("Email:", details.Email)
|
||||
fmt.Println("Expires:", details.Expiration)
|
||||
|
||||
if len(details.Groups) > 0 {
|
||||
fmt.Println("User Groups:")
|
||||
for _, group := range details.Groups {
|
||||
fmt.Println("-", group)
|
||||
}
|
||||
} else {
|
||||
fmt.Println("No groups found in token.")
|
||||
}
|
||||
|
||||
// Check if user is in a specific group
|
||||
if rbac.HasGroup(claims, "admins") {
|
||||
fmt.Println("User is an admin.")
|
||||
}
|
||||
|
||||
// Check if user is in any of these groups
|
||||
if rbac.HasAnyGroup(claims, []string{"developers", "querybuilders"}) {
|
||||
fmt.Println("User can modify or query data.")
|
||||
}
|
||||
|
||||
// Check if user is in all of these groups
|
||||
if rbac.HasAllGroups(claims, []string{"uploaders", "exporters"}) {
|
||||
fmt.Println("User can both upload and export data.")
|
||||
}
|
||||
} else {
|
||||
fmt.Println("Invalid token")
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,28 @@
|
||||
-----BEGIN PRIVATE KEY-----
|
||||
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQDX5vunPVZ3fVNY
|
||||
dwJzOvTsgoHWEQlkXs/FSjHz90HzLCloZ8/g7yqIEPwmxmHHkHVjMJryyhzoOhnU
|
||||
6OYuDDFiTlWL6UFX74+EC/bVDVFWOU016R6WZX+paeIn7JV7pvovoG+WCRgaypUy
|
||||
rJ4FGAMNel8uuq1KCrhV5UsQ6e6IGJ3bry+mRp9+Pqk91viWj1JVc1t+t2IfyJMY
|
||||
/Hka0FiobnIAVSQPrI6ULoZul80ndB26mK2WRsr6A+S/DVHZLJ2qvtxrtdqXsK+m
|
||||
tr+MKrBWFhcnMrNkYCCTEFWC4TiyYIXWGWhHSNj87CIaboggQ2ybLvAiulFvrgf8
|
||||
ES6LyRj3AgMBAAECggEAZ7MkMGG/xEjH3XfcD2jD901/+0fXkQQRG5vVfm7GmHwf
|
||||
r2wdZta5QP2XfzBOCsKR/4B7DB6T3974RVFQLdHhbmxdnoP8xLXl4vC0MATjilyf
|
||||
f0NnU6mQtdiLrc1uxyOei32t2wynLUccfmh2xc+Qt8qNKS60yRl5DJjDg245CdiW
|
||||
ZhN40svLKfeVPallv2zrIZRbySEWXsCZRzBE+CYNrdRTWXSp45xCrRn+lseUxQXH
|
||||
n+VoaP2KzHGgE4Lv5476EtVAq9G1yVN6Z0+8xWOiG9s+X3BNKPXWP4BGvg9tjBi0
|
||||
77U/hYrytMEPu8RV0ZR0zvlFVItqjujdKOJ9zJWTIQKBgQD/shNiXwCG/Ywrvs/g
|
||||
lWNkvM+8iYyALtCuOR7rsuR0QP0OnC9HsZbttOwMwiC8yJiMZ7DuBWp7iqfjmPs7
|
||||
90dTxn4iQNkdoUE1DrobViPp+7pWIHqDH82r/Gy3nwMXLt/UFxi85lYd1Oo3us9C
|
||||
ICvhFmzGAzIfiTKTXIJqJF9EqQKBgQDYKMe2ACP4rGVmJTSTkMn9c22gDTeCMEgI
|
||||
dvlZOS7PJXAsznlnpTH+KLEyJhRenj08VxO6LcXI1urTe5G5aPStutBzods2X/iM
|
||||
i1CmtOzeRGOkDVmqdYGgk0SXvTQg/z9MnwYCv+a904LQdMQ7TGgaoCYMJc3qWLO7
|
||||
p+/qGSZUnwKBgBvZZ2cVddc+EmBJXhbV7odwUSf1y0nCz5PKQOXnDB7lXSqUNEoY
|
||||
u5mUVQlms24cYxEX0ht6l4hxJ6wQY3y6iBhFzEMq0Pr7L0D6I6cKkMrRUhBDZVSW
|
||||
yC3tRmIRfaKuxk4xXc5lQAfrwr7jJ+PJ4T2Y1awTeQgaR1npf4LUB1RRAoGBAL+t
|
||||
GbrX0Q33wUqcf0zDPXoT2wfr8GbvbVCkP2PRAyMIrbnttVYk9HnNl6NChRmJ8/8H
|
||||
sCSN5i679StnDcd9vEo5uBJxWjOTUpE+EFxjXw+RUVHtzK8M18+OB2sOiaUg8f59
|
||||
nRTfGjsFzaAPitqSXFYP4O0wsLG3ylkDCAlsF8M9AoGALYTvOBdGJn/31XazCSeS
|
||||
v2/iYnn41aw2DzxEYIn+QfkKH7Ctc39dfYV1jrhoI7m2T90GJKYfiZidd27fzmib
|
||||
aPGQhCRFS7NPj2wI4kAFftRRtowIzHwEvVi1VvKWbyZII04FLU6aNVWrZE/E+2f5
|
||||
/4AmcI3dqS5PhGQEystcvhY=
|
||||
-----END PRIVATE KEY-----
|
||||
@@ -0,0 +1,9 @@
|
||||
-----BEGIN PUBLIC KEY-----
|
||||
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA1+b7pz1Wd31TWHcCczr0
|
||||
7IKB1hEJZF7PxUox8/dB8ywpaGfP4O8qiBD8JsZhx5B1YzCa8soc6DoZ1OjmLgwx
|
||||
Yk5Vi+lBV++PhAv21Q1RVjlNNekelmV/qWniJ+yVe6b6L6BvlgkYGsqVMqyeBRgD
|
||||
DXpfLrqtSgq4VeVLEOnuiBid268vpkaffj6pPdb4lo9SVXNbfrdiH8iTGPx5GtBY
|
||||
qG5yAFUkD6yOlC6GbpfNJ3QdupitlkbK+gPkvw1R2Sydqr7ca7Xal7Cvpra/jCqw
|
||||
VhYXJzKzZGAgkxBVguE4smCF1hloR0jY/OwiGm6IIENsmy7wIrpRb64H/BEui8kY
|
||||
9wIDAQAB
|
||||
-----END PUBLIC KEY-----
|
||||
Reference in New Issue
Block a user