PDF (美式信紙) - 420.2Kb
PDF (A4) - 419.0Kb
使用 mysql_declare_client_plugin()
和 mysql_end_client_plugin
巨集宣告用戶端外掛程式描述符(請參閱第 4.4.2.3 節「用戶端外掛程式描述符」)。對於 auth_simple
外掛程式,描述符如下所示
mysql_declare_client_plugin(AUTHENTICATION)
"auth_simple", /* plugin name */
"Author Name", /* author */
"Any-password authentication plugin", /* description */
{1,0,0}, /* version = 1.0.0 */
"GPL", /* license type */
NULL, /* for internal use */
NULL, /* no init function */
NULL, /* no deinit function */
NULL, /* no option-handling function */
auth_simple_client /* main function */
mysql_end_client_plugin;
從外掛程式名稱到選項處理函數的描述符成員,對所有用戶端外掛程式類型都是通用的。(如需說明,請參閱第 4.4.2.3 節「用戶端外掛程式描述符」。)在通用成員之後,描述符還有一個特定於身份驗證外掛程式的額外成員。這是處理與伺服器通訊的「主要」函數。該函數接受兩個參數,分別代表 I/O 結構和連線處理常式。對於我們簡單的任何密碼外掛程式,主要函數除了將使用者提供的密碼寫入伺服器之外,不執行任何操作
static int auth_simple_client (MYSQL_PLUGIN_VIO *vio, MYSQL *mysql)
{
int res;
/* send password as null-terminated string as cleartext */
res= vio->write_packet(vio, (const unsigned char *) mysql->passwd,
strlen(mysql->passwd) + 1);
return res ? CR_ERROR : CR_OK;
}
主要函數應傳回下表中顯示的其中一個錯誤代碼。
CR_OK_HANDSHAKE_COMPLETE
表示用戶端已成功完成其部分工作,並且已讀取最後一個封包。如果身份驗證協定中的往返次數事先未知,並且外掛程式必須讀取另一個封包才能確定身份驗證是否完成,則用戶端外掛程式可能會傳回 CR_OK_HANDSHAKE_COMPLETE
。