IIS集中化管理与编程REST API
目录
Microsoft IIS Administration 微软提供,管理IIS配置的REST API 和集中化IIS管理WEB UI。
l 支持绝大部分IIS配置项管理
l 支持管理远程IIS,实现集中化IIS配置管理。
l 支持REST API,方便集成到自研系统。
l 支持IIS配置访问安全性设置
Github:https://github.com/Microsoft/IIS.Administration
微软官网使用文档:https://docs.microsoft.com/en-us/IIS-Administration/
下载:https://docs.microsoft.com/en-us/IIS-Administration/getting-started
环境要求:
l 操作系统Windows7版本及以上版本
l IIS Administration API 依赖.NET Core,在安装IIS Administration安装包时,会按需自动安装
安装完后:
Windows服务名:Microsoft IIS Administration
Microsoft IIS Administration API地址:https://localhost:55539 (可以使用IP地址访问,当时会遇到权限问题,修改权限的方法在下面“修改配置文件”中介绍)
Web UI管理地址:https://manage.iis.net/get
获取AccessToken
进入https://localhost:55539/connect,创建一个Access Key
拿到accesstoken后
l 通过地址:https://localhost:55539/connect 进入api展示界面(https://localhost:55539/#/api),查看可在自己的程序中通过rest api 访问iis信息
l 通过地址:https://manage.iis.net/connect 进入UI管理界面
1) 配置文件路径:%SystemDrive%\Program Files\IIS Administration\<version>\Microsoft.IIS.Administration\config\**
2) 修改配置文件后需要重启windows服务(Microsoft IIS Administration)
3) appsettings.json 配置:安全性、日志、audit(审计)、cors(跨域)等
4) modules.json配置:启用或禁用IIS配置模块
配置修改示例
示例一、访问https://远程IP地址:55539/connect ,出现windows登录验证框
修改点:修改appsettings.json,将"require_windows_authentication"设置为 false
示例二、编码访问IIS Administration REST API 报401没有权限访问
修改点:修改appsettings.json,"access_policy" -> "api" ->"users": "administrators"修改为:"users": "Everyone"
appsettings.json修改后类似如下:(默认会将执行安装包的角色加入到安全设置中)
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
"security"
: {
"require_windows_authentication"
:
false
,
//
默认为
true
"users"
: {
"administrators"
: [
……
],
"owners"
: [
……
]
},
"access_policy"
: {
"api"
: {
"users"
:
"Everyone"
,
//
默认为执行安装包角色
"access_key"
:
true
},
"api_keys"
: {
"users"
:
"administrators"
,
"access_key"
:
false
},
"system"
: {
"users"
:
"owners"
,
"access_key"
:
true
}
}
}
|
前面介绍中拿到Access Token后,进入 https://manage.iis.net 管理界面
支持远程IIS管理
IIS服务器的系统资源监控
IIS根节点配置管理
IIS上的站点信息
IIS上的特定站点配置管理
包括:绑定信息、应用程序池、虚拟目录下的应用程序、身份验证、默认文档、目录浏览、IP限制、日志、MIME类型、监控、模块、响应压缩、请求筛选、HTTP响应标头、请求跟踪、静态缓存、HTTP重定向等
前面介绍中拿到Access Token后,进入 https://localhost:55539/#/api
METHOD DESCRIPTION
GET Retrieves the specified resource
POST Creates a resource
PATCH Updates the specified resource
DELETE Deletes the specified resource
HEAD Similar to get except only returns HTTP headers
示例
https://docs.microsoft.com/en-us/IIS-Administration/api/crud
代码示例RestSharp
01
02
03
04
05
06
07
08
09
|
var
client =
new
RestClient(iisAdminBaseUrl);
ServicePointManager.ServerCertificateValidationCallback +=
(sender, certificate, chain, sslPolicyErrors) =>
true
;
var
request =
new
RestRequest(
"/api/webserver/websites"
, Method.GET);
request.AddHeader(
"Access-Token"
, $
"Bearer {token}"
);
request.AddHeader(
"Accept"
,
"application/hal+json"
);
IRestResponse response = client.Execute(request);
if
(response.IsSuccessful)
{ …… }
|
代码示例HttpClient
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
|
var
apiClient =
new
HttpClient(
new
HttpClientHandler()
{
UseDefaultCredentials =
true
,
ServerCertificateCustomValidationCallback = (message, cert, chain, error) =>
true
},
true
);
// Set access token for every request
apiClient.DefaultRequestHeaders.Add(
"Access-Token"
,
"Bearer {token}"
);
// Request HAL (_links)
apiClient.DefaultRequestHeaders.Add(
"Accept"
,
"application/hal+json"
);
var
res = await apiClient.GetAsync(
"https://localhost:55539/api/webserver/websites"
);
if
(res.StatusCode != HttpStatusCode.OK) {
HandleError(res);
return
;
}
JArray sites = JObject.Parse(res.Content.ReadAsStringAsync().Result).Value<JArray>(
"websites"
);
|
===========================================
over,谢谢阅读,若对你有帮助,请帮推荐下。
原文地址https://www.cnblogs.com/heyuquan/p/iis-admin-and-develop.html