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