magiclabs / magic-admin-php

Magic admin PHP SDK makes it easy to leverage Decentralized ID tokens to protect routes and restricted resources for your application.
https://docs.magic.link/admin-sdk/php
MIT License
19 stars 5 forks source link

Validate `aud` in DID token. Pull client ID from Magic servers if not passed in constructor #22

Closed magic-ravi closed 1 year ago

magic-ravi commented 1 year ago

📦 Pull Request

[Provide a general summary of the pull request here.]

🗜 Versioning

(Check one!)

✅ Fixed Issues

🚨 Test instructions

Tested with the following cases:

    public function testMagicInit() {
    # no client id passed in constructor -> validates
      $this->magic = new \MagicAdmin\Magic('sk_live_EC77B0F146CC15F1', $this->timeout, $this->retries, $this->backoff_factor);
      $this->magic->token->validate('WyIweGEzN2ZlNzZjYzg1YWNlYzRmYmM0NGU4ZTRiNTcxOWE4OWRiZGJlNjdjODE2Y2UwMWVhNjRmMmMyMDdlZjkzZjc3N2UzY2UyZTAxNWE0NzE0YzNmMDc2NWFjMzMyNjljNzcwOThkYjNjZjdkY2E2YWI5NGU0MWMwN2M0NzhmYjU4MWMiLCJ7XCJpYXRcIjoxNjg4Njc3ODU5LFwiZXh0XCI6MTAwMDE2ODg2Nzc4NTksXCJpc3NcIjpcImRpZDpldGhyOjB4ZGU4YkFBQUM3NTc0RDRhNWRhQjk2NGRBQjJlM2EwNWFFYWI3OTg1NVwiLFwic3ViXCI6XCJFeFpxM3YtT2c2QnMtWEIxU1U1TEo1SVd1WjVlQ2tCV3pIWHpXaDRSbFJJPVwiLFwiYXVkXCI6XCJpemc4bUpLZzRrRVBuZ0x1WGhMVVFnc0ZSZWhYR2Jmb1VYcEJoSGlEcTZVPVwiLFwibmJmXCI6MTY4ODY3Nzg1OSxcInRpZFwiOlwiMzYwNDlkMGEtMDA2YS00MDU5LThiNWYtNThjYmE1NzU1ZDJhXCIsXCJhZGRcIjpcIjB4NDBjODBjMzU0YzhiMmRmYzkzZGIyNDM5Zjc4Mjc0MTc3ZDE5NDEwNmI4NjJmZTdiMGQxMDE5YzQ2ODkxZTBlMzdhMzMzYjEwNGZkOWMxZTBlMDc4Mjk3MGQ0YTMzNGZjNjU3ZTY4Yzk1OGEyMmNjMDc5ZmIwNzJjNzc4ZDkwOTYxY1wifSJd');
      # client id passed in constructor -> validates
      $this->magic = new \MagicAdmin\Magic('sk_live_EC77B0F146CC15F1', $this->timeout, $this->retries, $this->backoff_factor, 'izg8mJKg4kEPngLuXhLUQgsFRehXGbfoUXpBhHiDq6U=');
      $this->magic->token->validate('WyIweGEzN2ZlNzZjYzg1YWNlYzRmYmM0NGU4ZTRiNTcxOWE4OWRiZGJlNjdjODE2Y2UwMWVhNjRmMmMyMDdlZjkzZjc3N2UzY2UyZTAxNWE0NzE0YzNmMDc2NWFjMzMyNjljNzcwOThkYjNjZjdkY2E2YWI5NGU0MWMwN2M0NzhmYjU4MWMiLCJ7XCJpYXRcIjoxNjg4Njc3ODU5LFwiZXh0XCI6MTAwMDE2ODg2Nzc4NTksXCJpc3NcIjpcImRpZDpldGhyOjB4ZGU4YkFBQUM3NTc0RDRhNWRhQjk2NGRBQjJlM2EwNWFFYWI3OTg1NVwiLFwic3ViXCI6XCJFeFpxM3YtT2c2QnMtWEIxU1U1TEo1SVd1WjVlQ2tCV3pIWHpXaDRSbFJJPVwiLFwiYXVkXCI6XCJpemc4bUpLZzRrRVBuZ0x1WGhMVVFnc0ZSZWhYR2Jmb1VYcEJoSGlEcTZVPVwiLFwibmJmXCI6MTY4ODY3Nzg1OSxcInRpZFwiOlwiMzYwNDlkMGEtMDA2YS00MDU5LThiNWYtNThjYmE1NzU1ZDJhXCIsXCJhZGRcIjpcIjB4NDBjODBjMzU0YzhiMmRmYzkzZGIyNDM5Zjc4Mjc0MTc3ZDE5NDEwNmI4NjJmZTdiMGQxMDE5YzQ2ODkxZTBlMzdhMzMzYjEwNGZkOWMxZTBlMDc4Mjk3MGQ0YTMzNGZjNjU3ZTY4Yzk1OGEyMmNjMDc5ZmIwNzJjNzc4ZDkwOTYxY1wifSJd');
      # mismatch between client ID and token -> raises
      $this->magic = new \MagicAdmin\Magic('sk_live_EC77B0F146CC15F1', $this->timeout, $this->retries, $this->backoff_factor, 'fake');
      $this->magic->token->validate('WyIweGEzN2ZlNzZjYzg1YWNlYzRmYmM0NGU4ZTRiNTcxOWE4OWRiZGJlNjdjODE2Y2UwMWVhNjRmMmMyMDdlZjkzZjc3N2UzY2UyZTAxNWE0NzE0YzNmMDc2NWFjMzMyNjljNzcwOThkYjNjZjdkY2E2YWI5NGU0MWMwN2M0NzhmYjU4MWMiLCJ7XCJpYXRcIjoxNjg4Njc3ODU5LFwiZXh0XCI6MTAwMDE2ODg2Nzc4NTksXCJpc3NcIjpcImRpZDpldGhyOjB4ZGU4YkFBQUM3NTc0RDRhNWRhQjk2NGRBQjJlM2EwNWFFYWI3OTg1NVwiLFwic3ViXCI6XCJFeFpxM3YtT2c2QnMtWEIxU1U1TEo1SVd1WjVlQ2tCV3pIWHpXaDRSbFJJPVwiLFwiYXVkXCI6XCJpemc4bUpLZzRrRVBuZ0x1WGhMVVFnc0ZSZWhYR2Jmb1VYcEJoSGlEcTZVPVwiLFwibmJmXCI6MTY4ODY3Nzg1OSxcInRpZFwiOlwiMzYwNDlkMGEtMDA2YS00MDU5LThiNWYtNThjYmE1NzU1ZDJhXCIsXCJhZGRcIjpcIjB4NDBjODBjMzU0YzhiMmRmYzkzZGIyNDM5Zjc4Mjc0MTc3ZDE5NDEwNmI4NjJmZTdiMGQxMDE5YzQ2ODkxZTBlMzdhMzMzYjEwNGZkOWMxZTBlMDc4Mjk3MGQ0YTMzNGZjNjU3ZTY4Yzk1OGEyMmNjMDc5ZmIwNzJjNzc4ZDkwOTYxY1wifSJd');
    }

⚠️ Update CHANGELOG.md