|
107 | 107 | "# 3) Set up the named values\n", |
108 | 108 | "nvs: List[NamedValue] = [\n", |
109 | 109 | " NamedValue(jwt_key_name, jwt_key_value_bytes_b64, True),\n", |
110 | | - " NamedValue('HRMemberRoleId', HR_MEMBER_ROLE_ID),\n", |
111 | | - " NamedValue('HRAssociateRoleId', HR_ASSOCIATE_ROLE_ID),\n", |
112 | | - " NamedValue('HRAdministratorRoleId', HR_ADMINISTRATOR_ROLE_ID)\n", |
| 110 | + " NamedValue('HRMemberRoleId', Role.HR_MEMBER),\n", |
| 111 | + " NamedValue('HRAssociateRoleId', Role.HR_ASSOCIATE),\n", |
| 112 | + " NamedValue('HRAdministratorRoleId', Role.HR_ADMINISTRATOR)\n", |
113 | 113 | "]\n", |
114 | 114 | "\n", |
115 | 115 | "# 4) Set up the policy fragments\n", |
|
226 | 226 | "source": [ |
227 | 227 | "import utils\n", |
228 | 228 | "from apimrequests import ApimRequests\n", |
229 | | - "from apimjwt import JwtPayload, SymmetricJwtToken\n", |
230 | | - "from apimtypes import HR_MEMBER_ROLE_ID, HR_ADMINISTRATOR_ROLE_ID, HR_ASSOCIATE_ROLE_ID\n", |
| 229 | + "from apimtypes import Role\n", |
| 230 | + "from users import UserHelper\n", |
| 231 | + "from authfactory import AuthFactory\n", |
231 | 232 | "\n", |
232 | 233 | "# Preflight: Check if the infrastructure architecture deployment uses Azure Front Door. If so, assume that APIM is not directly accessible and use the Front Door URL instead.\n", |
233 | | - "endpoint_url = apim_gateway_url\n", |
234 | | - "utils.print_message('Checking if the infrastructure architecture deployment uses Azure Front Door.', blank_above = True)\n", |
235 | | - "afd_endpoint_url = utils.get_frontdoor_url(deployment, rg_name)\n", |
236 | | - "\n", |
237 | | - "if afd_endpoint_url:\n", |
238 | | - " endpoint_url = afd_endpoint_url\n", |
239 | | - " utils.print_message(f'Using Azure Front Door URL: {afd_endpoint_url}', blank_above = True)\n", |
240 | | - "else:\n", |
241 | | - " utils.print_message(f'Using APIM Gateway URL: {apim_gateway_url}', blank_above = True)\n", |
| 234 | + "endpoint_url = utils.test_url_preflight_check(deployment, rg_name, apim_gateway_url)\n", |
242 | 235 | "\n", |
243 | 236 | "# 1) HR Administrator\n", |
244 | 237 | "# Create a JSON Web Token with a payload and sign it with the symmetric key from above.\n", |
245 | | - "jwt_payload_hr_admin = JwtPayload(subject = 'user123', name = 'Angie Administrator', roles = [HR_MEMBER_ROLE_ID, HR_ADMINISTRATOR_ROLE_ID])\n", |
246 | | - "encoded_jwt_token_hr_admin = SymmetricJwtToken(jwt_key_value, jwt_payload_hr_admin).encode()\n", |
247 | | - "print(f'\\nJWT token HR Admin: {encoded_jwt_token_hr_admin}') # this value is used to call the APIs via APIM\n", |
| 238 | + "encoded_jwt_token_hr_admin = AuthFactory.create_symmetric_jwt_token_for_user(UserHelper.get_user_by_role(Role.HR_ADMINISTRATOR), jwt_key_value)\n", |
| 239 | + "print(f'\\nJWT token for HR Admin:\\n{encoded_jwt_token_hr_admin}') # this value is used to call the APIs via APIM\n", |
248 | 240 | "\n", |
249 | 241 | "# Set up an APIM requests object with the JWT token\n", |
250 | 242 | "reqsApimAdmin = ApimRequests(endpoint_url)\n", |
|
258 | 250 | "\n", |
259 | 251 | "# 2) HR Associate\n", |
260 | 252 | "# Create a JSON Web Token with a payload and sign it with the symmetric key from above.\n", |
261 | | - "jwt_payload_hr_associate = JwtPayload(subject = 'user789', name = 'Aaron Associate', roles = [HR_MEMBER_ROLE_ID, HR_ASSOCIATE_ROLE_ID])\n", |
262 | | - "encoded_jwt_token_hr_associate = SymmetricJwtToken(jwt_key_value, jwt_payload_hr_associate).encode()\n", |
263 | | - "print(f'\\nJWT token HR Associate: {encoded_jwt_token_hr_associate}') # this value is used to call the APIs via APIM\n", |
| 253 | + "encoded_jwt_token_hr_associate = AuthFactory.create_symmetric_jwt_token_for_user(UserHelper.get_user_by_role(Role.HR_ASSOCIATE), jwt_key_value)\n", |
| 254 | + "print(f'\\nJWT token for HR Associate:\\n{encoded_jwt_token_hr_associate}') # this value is used to call the APIs via APIM\n", |
264 | 255 | "\n", |
265 | 256 | "# Set up an APIM requests object with the JWT token\n", |
266 | 257 | "reqsApimAssociate = ApimRequests(endpoint_url)\n", |
|
0 commit comments